2012-04-16 9 views
4

I持って次の宣言:ArrayListから要素を削除する方が効率的ですか?

ArrayList<String> list = new ArrayList<String>(); 
list.add("1"); 
list.add("2"); 
list.add("2"); 
list.add("3"); 
list.add("4"); 

今私の質問です:私は、リストから「2」のSを削除したい場合は、どの方法が良いですか?

最初の方法:

for(int i = 0; i < list.size(); i++) { 
    if(list.get(i).equals("2")) { 
     list.remove(i); 
     i--; 
    } 
} 

第二の方法:

Iterator<String> iterator = list.iterator(); 
    while(iterator.hasNext()) 
     if(iterator.next().equals("2")) 
      iterator.remove(); 

両方が、より効率的である適切にリコールセーフとされていますか?

IndexOutOfBoundsエラーを発生させずにArrayListから要素を削除する方法はありますか? forループ正常に動作します、あなたの個々の要素については

+0

もう1つはよりクリアです – Jayan

+0

'contains()'メソッドを使用して何らかの条件を課します。 – Lion

+3

リストの途中から効率的に削除したい場合は、 'ArrayList'を使うべきではありません。たぶん 'LinkedList'。 –

答えて

関連する問題