我提出的Android應用程序的其他一個ArrayList的一部分。我試圖猜測用戶剛剛在木琴上演奏了哪首歌。我有:private List<String> mDespacito = new ArrayList<String>(Arrays.asList("f", "a","d","d"));
和private List<String> mPlayed = new ArrayList<String>();
當用戶按下木琴一個關鍵,我加他壓到mPlayed ArrayList中的關鍵,是這樣的:Java是爲了
public void playD(View v){
Log.d("Xylophone", "Played D!");
mSoundPool.play(mDSoundId,LEFT_VOLUME,RIGHT_VOLUME,PRIORITY,NO_LOOP,NORMAL_PLAY_RATE);
mPlayed.add("d");
CheckForSong();
}
現在,CheckForSong包含:
public void CheckForSong(){
if (mPlayed.containsAll(mDespacito)){
Log.d("Xylophone","You just played despacito");
mPlayed.removeAll(mDespacito);
}
}
所以,它應該做的:
played F
played A
played D
played D
You just played despacito
但它的作用:
played F
played A
played D
You just played despacito
played D
你甚至可以這樣做:
played F
played G
played A
played G
played D
You just played despacito
而且我知道爲什麼:因爲if (mPlayed.containsAll(mDespacito))
的只是檢查是否mDespacito的元素是mPlayed。但我需要檢查是否有mDespacito的所有元素(包括那些有兩次),如果他們在正確的順序。有沒有像我可以使用的命令?由於
'Collections.indexOfSubList'可以幫助你! –
如果處理個人筆記,這將得到串連成一個字符串中的字符,你可以使用'String.contains()'這需要順序考慮。 –