The*_*ken -6 java linked-list listiterator
我有以下代码:
ArrayList<String> words;
words = new ArrayList<String>();
words.add("is");
words.add("us");
ListIterator<String> it;
it = words.listIterator();
it.add("##");
System.out.println(words);
it.next();
it.next();
it.previous();
it.set("##");
System.out.println(words);
Run Code Online (Sandbox Code Playgroud)
我希望输出会是## us ##,但是当我运行程序时它会返回## is ##.我希望这与ListIterator添加项目ArrayList而不是ArrayList向其自己添加项目有关.
为什么程序以这种方式运行?
你的问题不明确,但我怀疑你可能遗漏的主要问题是ListIterator.add在当前位置插入:
该元素紧接在next()返回的下一个元素之前插入(如果有),并且在previous()返回的下一个元素之后插入(如果有的话).
并且:
新元素在隐式游标之前插入:对next的后续调用不受影响
因此,在您it.add("##")对列表的初始调用包含后"##","is" "us".然后你接下来两次移动 - 第一个移动光标到之后"is"(返回).第二个将光标移动到刚刚"us"(返回)之后.然后调用再次previous()返回"us",最后调用set()替换"us"为"##":
用指定的元素(可选操作)替换next()或previous()返回的最后一个元素.
这看起来完全符合文档.不幸的是,目前尚不清楚这些步骤中哪一个令你感到困惑,因为你在一个问题中混淆了这么多.
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |