反復子JLS
によると、プログラマがいずれかの方向にリスト を通過することを可能にするリストのイテレータ、中にリストを変更しますイテレータの現在の位置をリスト内の というように取得します。 ListIteratorには現在の要素がありません 要素です。そのカーソル位置は、previous()の呼び出しによって返される要素 と、next()の呼び出しによって返される要素 との間にあります。
削除、追加()を使用することができる(): 以下キャレット(^)で示されるように、長さn のリストについては、反復子は、N + 1つの可能なカーソル位置を有しますイテレータで変更を行うメソッドと同じものがリスト参照に反映されます。
は
JLS
に従って削除リストから次の()または 前()(任意のオペレーション)によって返された最後の要素を削除します。この呼び出しは、 nextまたはpreviousに1回だけ行うことができます。 add(E)が でない場合にのみ、nextまたはpreviousへの最後の呼び出しの後に呼び出されます。
だから、それがスローされます)((次の)または前呼び出さず二度削除を使用する場合java.lang.IllegalStateException
私は
public static void main(String[] args) {
List<String> list =new ArrayList<>();
list.add("55");
list.add("155");
list.add("255");
for (ListIterator<String> iterator = list.listIterator(); iterator.hasNext();){
System.out.println(list.size());
iterator.add("88");
System.out.println(list.size());
iterator.next();
System.out.println(list.size());
iterator.remove();
System.out.println("first remove done");
iterator.remove(); // will throw exception if previous or next is not called
}
System.out.println(list);
}
)((追加)と削除をテストするようにコードを修正
これはJavaですか?あなたが使用している言語を人々に伝えれば助けになります。彼らは違います。 –
とにかく、答えはあなたができない、あなたはする必要はありません。コピーを繰り返します。あなたがJavaでそれをどうやって行うのかわかりませんが、ここで十数例を見つけることは間違いありません。 –
申し訳ありませんが、私はそれがJavaであると書いているのを忘れていましたが、返事はありがたいですが、要素を追加する条件が以前に追加した要素に依存するため、できません。 – user18497