基本思路:用listIterator(n)指向列表索引为n元素的特性,将ListIterator指向list1的末尾,依次加入到list2中。即反向读取list1,将读取的每一个元素顺序插入list2.
package p409;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class TwoList {
int length;
List<Integer> list1 = new ArrayList<Integer>(length);
List<Integer>list2 = new ArrayList<Integer>(length);
ListIterator<Integer> li;
//构造函数,给list1赋值,并且将li指向list1的最末尾的一个元素。
TwoList(int length){
this.length=length;
for(int i=1;i<length;i++){
list1.add(i);
}
li= list1.listIterator(length-1);//List序号是从零开始计数的,所以最末尾的元素为length-1
}
//对list2 进行初始化
void list2(){
while(li.hasPrevious()){//当ListIterator li 前面具有元素时,将当前的元素赋值给list2,并且向前移动(即li.previous的功能)
list2.add(li.previous());
}
}
//分别输出list1,list2
void out1(){
System.out.println(list1);