java使用listIterator插入元素

时间:2012-12-03 23:07:03

标签: java arraylist iterator listiterator

我正在为玩具编程语言构建图形着色分配器。在生成溢出代码时,有时我必须在当前指令之前插入一个加载{用于恢复}或在当前指令之后插入{用于溢出}。我的代码表示为一个图形,其中包含每个基本块的节点和块内的指令列表,

我生成一个dfs有序的图节点列表,并为每个节点遍历节点内的指令列表, 使用codeList.listIterator()我可以分别来回通过next和previous,并在之前和之前插入一个add for insert。

如何使用add()方法直接在列表的开头插入?

1 个答案:

答案 0 :(得分:4)

来自ListIterator.add API

The element is inserted immediately before the element that would be returned by next(), if any, and after the element that would be returned by previous(), if any. (If the list contains no elements, the new element becomes the sole element on the list.) The new element is inserted before the implicit cursor: a subsequent call to next would be unaffected, and a subsequent call to previous would return the new element. 

这是一个如何在实践中运作的例子

    List<String> l = new ArrayList<String>();
    l.add("1");
    ListIterator<String> i = l.listIterator();
    i.add("2");
    while (i.hasPrevious()) {
        i.previous();
    }
    i.add("3");
    System.out.println(l);

输出

[3, 2, 1]

我们可以使用ListIterator

做更多技巧