0

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

我生成了一个 dfs 有序的图形节点列表,对于每个节点,我使用 codeList.listIterator() 遍历节点内的指令列表,我可以分别通过 next 和 previous 来回执行,并为 insert after 和 insert before 添加。

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

4

1 回答 1

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 做更多的技巧

于 2012-12-03T23:18:34.120 回答