2012-01-27 79 views
1

2つのリストがあり、パラメータに応じて2つのリストのうちの1つから要素を削除します。その後、追加処理のためにリストをループします。しかし、リストが1要素を失ったとしても、list.size()はまだ同じで、java.lang.IndexOutOfBoundsExceptionになります。これを解決するために何かできることはありますか?リストから要素を削除する

System.out.println(high_list_price.size()); 

    if(first_hit.equals("low")){ 
     high_list_date.remove(high_list_date.size()-1); 
     high_list_price.remove(0); 
     high_list_percent.remove(0); 
    } 
    if(first_hit.equals("high")){ 

     low_list_date.remove(low_list_date.size()-1); 
     low_list_price.remove(0); 
     low_list_percent.remove(0); 
    } 

    System.out.println(high_list_price.size()); 

    for(int tt = 0;tt < low_list_date.size();tt++){ 
     System.out.println(low_list_date.get(tt)+"|"+low_list_price.get(tt)); 
    } 

    for(int ii = 0; ii < high_list_date.size();ii++){ 
     System.out.print(high_list_date.get(ii)+"|"); 
     System.out.println(+high_list_price.get(ii)); 
    } 

high_list_price.size()= .remove前と後の両方51、未だhigh_list_date.size()は51から50に進み、その理由は?

+3

'array.size()'?いずれにしても、実際に何かを削除しましたか? 'size()'は現在のサイズを返します。 –

+0

これらのリストをどのように作成していますか?彼らは配列によって支持されていますか? –

+2

ここに貼り付けたコードからエラーが発生していないと思われます。それは他のものでなければならない。 – ChrisJ

答えて

2

ArrayListsを逆方向に反復すると、後の要素を気にせずに現在の要素を削除できます。
もう1つの方法は、反復して削除するもののリストを作成し、それらの要素を元のリストから削除することです。

0

普通の配列の代わりにArrayListを使用します。 remove(Object o)

1

存在する@ z5hによって提供される有効なオプションへの追加として、Collection.remove()原因を使用してその問題の種類を引き起こすことなく、基礎となるコレクションから項目を削除remove()方法を含むIteratorインタフェースを使用することを検討してください。

Iteratorを使用すると、コレクションをより読みやすくするのに役立ちます。

関連する問題