2017-06-17 11 views
-1

後のArrayListからすべての項目を削除し、私は配列リスト特定の項目

ArrayList<String> list=new ArrayList<String>(); 
    list.add("Apple"); 
    list.add("Ball"); 
    list.add("Cat"); 
    list.add("dog"); 
    list.add("Egg"); 

を持っていると私は「猫」の後にすべての項目を削除したいです。

これを行う方法はありますか?

答えて

4

あなたは残りの要素のsubList(...)、およびclear()それを得ることができます:

int index = list.indexOf("Cat"); 
if (index > -1) { 
    list.subList(index + 1, list.size()).clear(); 
} 

は、私は他の回答試みがremoveremoveAllメソッドを使用しようとしている参照してください。 remove(Object)removeAll(Collection)の方法では、リスト全体をスキャンする必要があるため、効率的ではありません。 さらに、複数の要素が複数回表示される場合は、 これらの手法では、対象の前にある要素も誤って削除される可能性があります。 subListclearを使用することは、正確で効率的で簡単です。

+0

ありがとう、それは働いています:) –

+0

ありがとう@Christopher! – janos

+1

@davidxxxいいえ、そうではありません。 [javadoc](https://docs.oracle.com/javase/8/docs/api/java/util/List.html#subList-int-int-)の「Throws」の説明を参照してください(また、試してみてください。) – janos

関連する問題