我有一个包含元素的arraylist -
0, 100, 200, 300, 400, 500, 600, 700...
从主列表中获取子列表后,如果 next()返回的元素为400
public static void add(List<String> list){
List<String> subList = list.subList(2, 7);// 200, 300, 400, 500, 600
ListIterator<String> listIterator = subList.listIterator();
while(listIterator.hasNext()) {
String value = listIterator.next();
if(value.equals("400")) {
listIterator.add("399");
}
}
System.out.println(subList);
}
子列表现在变为 -
[200, 300, 400, 399, 500, 600]
如图所示,元素399
在 400
之后。
doc说
将指定的元素插入列表(可选操作)。该 元素会立即插入之前元素 由 next() ....
返回
请澄清。
答案 0 :(得分:3)
将指定的元素插入列表(可选操作)。元素将紧接在next()
返回的元素之前插入
这意味着该元素将紧接在下一次调用next()
之前返回的元素之前插入(即发生的next()
调用之后对listIterator.add("399")
的呼叫,而不是之前的呼叫,即500.因此,新元素将在500之前添加。
答案 1 :(得分:1)
将指定的元素插入列表(可选操作)。元素将紧接在next()返回的元素之前插入。
public static void add(List<String> list){
List<String> subList = list.subList(2, 7);// 200, 300, 400, 500, 600
ListIterator<String> listIterator = subList.listIterator();
while(listIterator.hasNext()) {
String value = listIterator.next();
if(value.equals("400")) { //when this statement is executed next would return 400
//399 will be inserted before next call to next() function , next call to next() function would return 500, so it will be inserted before 500*/
listIterator.add("399");
}
}
System.out.println(subList);
}
答案 2 :(得分:0)
紧接在
返回的元素之前next()
此时由next
返回的元素为500。