我希望能够使用ArrayList<String>
向ListIterator
插入元素,但是在阅读与ListIterator
类的add方法相关的文档后,我感到很困惑,如果我做这样的事情
for(int i = 0 ; i < list.size() ; ++i)
listIterator.add( list.get(i) );
这段代码片段对我的列表迭代器做了什么,它在哪里移动列表迭代器?
当我运行以下代码时,我得到的结果是“嗨” - :
import java.util.ArrayList;
import java.util.ListIterator;
public class ListIter {
public static void main(String[] args) {
String[] s = {"Hi", "I", "am", "Ankit"};
ArrayList<String> list = new ArrayList<>();
ListIterator<String> listIterator = list.listIterator();
for (int i = 0; i < s.length; ++i) {
listIterator.add(s[i]);
}
while (listIterator.hasPrevious()) {
listIterator.previous();
}
System.out.println(listIterator.next());
}
}
请告知如何生成此输出?
答案 0 :(得分:13)
您没有正确使用迭代器。使用迭代器的正确方法是使用迭代器本身而不是索引来遍历列表。
ListIterator<SomeObject> listIterator = list.listIterator();
while(listIterator.hasNext()){
SomeObject o = listIterator.next();
listIterator.add(new SomeObject());
}
一个简单的例子:
public static void main(String args []){
List<String> list= new ArrayList<String>();
list.add("hi");
list.add("whats up");
list.add("how are you");
list.add("bye");
ListIterator<String> iterator = list.listIterator();
int i=0;
while(iterator.hasNext()){
iterator.next();
iterator.add(Integer.toString(i++));
}
System.out.println(list);
//output: [hi, 0, whats up, 1, how are you, 2, bye, 3]
}
}
答案 1 :(得分:1)
我不知道你为什么要通过ArraList
向ListIterator
插入元素。
您可以通过ArrayList<String> list = new ArrayList<>(Arrays.asList(s));
但无论如何,您已经使用您提到的方法将Array
的所有元素添加到ArrayList
。您只需要以正确的方式遍历ArrayList
,如下所示:
import java.util.ArrayList;
import java.util.ListIterator;
public class ListIteratorTest {
public static void main(String[] args) {
String[] s = { "Hi", "I", "am", "Ankit" };
ArrayList<String> list = new ArrayList<>();
ListIterator<String> listIterator = list.listIterator();
for (int i = 0; i < s.length; ++i) {
listIterator.add(s[i]);
}
//Iterate using ListIterator
while (listIterator.hasNext()) {
System.out.println((String) listIterator.next());
}
//Iterate by Enhanced For Loop
for (String val : list) {
System.out.println(val);
}
}
}
答案 2 :(得分:-1)
import java.util.ArrayList;
import java.util.ListIterator;
public class listTest {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<String>();
al.add("test");
al.add("ref");
ListIterator<String> ltr= al.listIterator();
while(ltr.hasNext())
{
int pos =ltr.nextIndex();
if (pos==1)
{
ltr.add("ted");
}
ltr.next();
}
System.out.println(al);
}
}