给定一个表L和另一个表P,它们包含以升序排列得到整数。操作printLots(L,P)将打印出L中那些由P所指定的位置上的元素。例如,P=1,3,4,6,那么,L中位于第1,3,4,6,位置上的元素被打印出来。写出过程printLots(L, P)。只可使用public型的Collection API容器操作。
代码如下:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ArraylistLP3_1 {
/* //非迭代器
public void printLots(ArrayList<Integer> L, ArrayList<Integer> P) {
for(int it : P) {
System.out.println(L.get(it));
}
}
*/
// 使用迭代器
public void printLots(List<Integer> L, List<Integer> P) {
Iterator<Integer> iteL = L.iterator();
Iterator<Integer> iteP = P.iterator();
Integer itemL = null;
Integer itemP = 0;
int start = 0;
while(iteP.hasNext() && iteL.hasNext() ) {
itemP = iteP.next();
while(start < itemP && iteL.hasNext()) {
start++;
itemL = iteL.next();
}
System.out.print(itemL + " ");
}
}
public static void main(String[] args) {
double starTime=System.currentTimeMillis();
ArraylistLP3_1 LP = new ArraylistLP3_1();
ArrayList<Integer> L = new ArrayList<>();
ArrayList<Integer> P = new ArrayList<>();
L.add(8); P.add(1);
L.add(12); P.add(3);
L.add(6); P.add(4);
L.add(5); P.add(6);
L.add(9);
L.add(7);
L.add(25);
L.add(6);
L.add(4);
LP.printLots(L, P);
double endTime=System.currentTimeMillis();
double Time=endTime-starTime;
System.out.println("运行时间为" + Time + "毫秒!");
}
}