哥们,你看看你的程序错误的地方在25行和第9行
然后分析了一下,不知道哥们想的到啥样的结果,如果是添加的话,代码这样就可以了- for (ListIterator it = a1.listIterator(); it.hasNext();) { // sop(it.hasPrevious());
- Object obj = it.next();
- if (obj.equals("java2"))
- it.add(obj);
- }
复制代码 运行的结果是:- [java1, java4, java2, java3]
- [java1, java4, java2, java2, java3]
- 5
复制代码 如果是改变元素的话,这样就可以了- for (ListIterator it = a1.listIterator(); it.hasNext();) { // sop(it.hasPrevious());
- Object obj = it.next();
- if (obj.equals("java2"))
- it.set("j");
- }
复制代码 运行的结果是:- [java1, java4, java2, java3]
- [java1, java4, j, java3]
- 4
复制代码 哥们这时可能就要问为啥我的就不行呢。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。对吧
楼上的大神,回答得很正确
集合文档对此方法的说明:用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。只有在最后一次调用 next 或 previous 后既没有调用 ListIterator.remove 也没有调用 ListIterator.add 时才可以进行该调用。
不过结果是不堪设想- for (ListIterator it = a1.listIterator(); it.hasNext();) { // sop(it.hasPrevious());
- Object obj = it.next();
- it.set("j");
- if (obj.equals("java2"))
- it.add(obj);
-
- }
复制代码 结果是- [java1, java4, java2, java3]
- [j, j, j, java2, j]
- 5
复制代码 将前面的3个,都set成了 j
|