62,614
社区成员
发帖
与我相关
我的任务
分享
List<Integer> lst1 = new ArrayList<Integer>(Arrays.asList(0,1,2,3,4,5,6,7,8,9));
List<Integer> lst2 = new ArrayList<Integer>(lst1);
ListIterator<Integer> it1 = lst1.listIterator();
ListIterator<Integer> it2 = lst2.listIterator(lst2.size());
//这里如果改为ListIterator<Integer> it2 = lst2.listIterator(lst2.size() - 1);
//那么下面这句it2.previous();就不需要了,但是程序运行时会抛出IllegalStateException异常......
it2.previous();
while (it1.hasNext())
{
Integer integer = (Integer) it1.next();
it2.set(integer);
if(it2.hasPrevious())//如果没有这个限制,也会抛出IllegalStateException异常......
//按理来说容器的长度都相等,一个迭代器指向源的最前面,另一个指向目标的最后,那么循环次数应该相等的啊!
it2.previous();
}
List<Integer> lst1 = new ArrayList<Integer>(Arrays.asList(0,1,2,3,4,5,6,7,8,9));
List<Integer> lst2 = new ArrayList<Integer>(lst1);
Collections.reverse(lst2);
System.out.println(lst2);
ListIterator<Integer> it1 = lst1.listIterator();
ListIterator<Integer> it2 = lst2.listIterator(lst2.size());
while (it1.hasNext() && it2.hasPrevious())
{
Integer integer = (Integer) it1.next();
it2.previous(); // 先拿到这个元素
it2.set(integer); // 再修改值
}
for(int i = list1.size() - 1; i>=0; i--){
list2.add(list1.get(i));
}
}