package day18作业;
import java.util.ArrayList;
import java.util.Iterator;
/*
* 去除ArrayList集合中的重复元素
* 思路:
* 可以定义两个容器,从一个容器中取出元素放到另一个容器中,如果另一个容器中有则把这个元素移除
* */
public class Demo5 {
public static void main(String[] args) {
ArrayList arr1=new ArrayList();
arr1.add("wew");
arr1.add("wedsd");
arr1.add("wewd");
arr1.add("wewd");
arr1.add("eahrg");
arr1.add("wqrs");
method(arr1);
}
public static void method(ArrayList arr1) {
ArrayList arr2=new ArrayList();
//遍历arr1容器
for(Iterator it=arr1.iterator();it.hasNext();){
Object obj=it.next();
//如果arr2容器中不包含当前的arr1容器的元素
if(!(arr2.contains(obj))){
arr2.add(obj);
}
}
//清空arr1容器中的元素
arr1.clear();
//把arr2中的元素赋给arr1容器中
arr1.addAll(arr2);
System.out.println(arr1);
}
}
package day18作业;
import java.util.ArrayList;
import java.util.Iterator;
/*
* 去除ArrayList集合中的重复元素
* 思路:
* 可以定义两个容器,从一个容器中取出元素放到另一个容器中,如果另一个容器中有则把这个元素移除
* */
public class Demo5 {
public static void main(String[] args) {
ArrayList arr1=new ArrayList();
arr1.add("wew");
arr1.add("wedsd");
arr1.add("wewd");
arr1.add("wewd");
arr1.add("eahrg");
arr1.add("wqrs");
method(arr1);
}
public static void method(ArrayList arr1) {
ArrayList arr2=new ArrayList();
//遍历arr1容器
for(Iterator it=arr1.iterator();it.hasNext();){
//如果arr2容器中不包含当前的arr1容器的元素
if(!(arr2.contains(it.next()))){
arr2.add(it.next());
}
}
//清空arr1容器中的元素
arr1.clear();
//把arr2中的元素赋给arr1容器中
arr1.addAll(arr2);
System.out.println(arr1);
}
}
为什么这两段代码运行结果不一样呢???求解
------解决方案--------------------
第二个显然错了 it.Next()
for(Iterator it=arr1.iterator();it.hasNext();){
//如果arr2容器中不包含当前的arr1容器的元素
if(!(arr2.contains(it.next()))){//如果现在指向第三个元素
arr2.add(it.next());//那么此处加入的是第四个元素
}
}
------解决方案--------------------
比如你有3个鸡蛋,第一次it.next()取到的是第一个鸡蛋,第二次it.next()的时候取到的是第二个鸡蛋,后面的写法,加入的是第二个鸡蛋,怎么可能会是一样的呢?而且可能出错,如果只有一个鸡蛋,你第二次it.next()的时候,没有鸡蛋可以取了....
------解决方案--------------------
第一个只执行了一次it.next()
第二个执行了两次
当然不一样了