ArrayList<String>
n 個の要素を含む A と、ArrayList<Integer>
削除する必要がある A からのインデックスを含む B があります。これらのインデックスを削除するにはどうすればよいですか? この : のようなインデックスを削除するA.remove(index)
と、 A のサイズが小さくなり、他のインデックスは同じ位置になくなります。
どんなアイデアでも大歓迎です。
リストに重複する文字列がない場合は、削除するオブジェクトを使用してリストを作成してから、配列リストのremoveAll(Collection c)メソッドを呼び出すことができます。
stringList
が文字列indexList
のリストであり、がインデックスのリストである場合:
List<String> toRemove = new ArrayList<String>();
for(Integer i : indexList){
toRemove.add(stringList.get(i));
}
stringList.removeAll(toRemove);
それらを並べ替える必要があり (Collections.sort() は、おそらく整数の配列リストの場合はすぐに使用できます)、最初に大きなインデックスを削除することから始めます。
for(int i = 0; i < arrayListInt.size(); i++){
int arrayIndexInIntArray = arrayListInt.get(i);
int arrayIndexToRemove = 0;
for (Iterator iterator = arrrayList.getIterator(); iterator.hasNext();) {
String tempString = (String) iterator.next();
if (arrayIndexInIntArray == arrayIndexToRemove) { //Some condition
iterator.remove();//Remove the value at the current iterator
break;
}
arrayIndexToRemove ++;
}
}
}
これを試して。
探している動作は、別のデータ構造を使用して実現するのが最適です。私自身、HashMapを考えました( Mapも参照)。