今天在学习链表的时候,有一个小例题:删除表中的偶数,使用的是ArrayList。我所学习的《数据结构与算法分析》这本书中只给出了使用remove删除偶数的算法,其他的创建一个数组对象,从键盘接收数组元素等等,是我自己添加的。小程序如下:
public class Remove {
//删除表中的偶数
public static void removeEvensVer1(List<Integer> lr1){
int i = 0;
while(i < lr1.size()){
if(lr1.get(i) % 2 == 0){
lr1.remove(i);
}
else
i++;
}
System.out.println("When the array are removed, array are:");
for(int j = 0;j < lr1.size();j++){
System.out.print(lr1.get(j)+" ");
}
System.out.println();
}
@SuppressWarnings("null")
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Integer> integer = new ArrayList<Integer>();
System.out.println("Please get the length:");
//while(scanner.hasNext()){
int length = scanner.nextInt();
System.out.println("Please input an array:");
for(int i = 0;i<length;i++){
integer.add(scanner.nextInt());
}
//}
System.out.println("The array are:");
for(int i = 0;i<integer.size();i++){
System.out.print(integer.get(i)+" ");
}
System.out.println();
removeEvensVer1(integer);
}
}
运行结果为:
注意:这个程序中容易出现的错误在于:使用List创建数组对象的时候。由于List包括两种实现方法:一种是LinkedList,另外一种是ArrayList。所以,一定要明确的指出你要new的是什么类型的数组。我在这里犯了错误,研究了很久。引以为戒!