通过列表迭代器在子列表中添加元素

时间:2018-04-09 08:14:48

标签: java arraylist sublist listiterator

我有一个包含元素的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]

如图所示,元素399400之后

doc

  

将指定的元素插入列表(可选操作)。该   元素会立即插入之前元素   由 next() ....

返回

请澄清。

3 个答案:

答案 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。