要求是要去除List中的重复元素,视频中老师讲的是先清空原集合,再将临时容器中的元素添加到集合中
但是我突然想起了retainAll();方法
因为临时容器中存入的就是唯一元素,那么去交集不就可以了吗?
但是运行结果不对,运行结果原集合根本没有改变,求教这是怎么回事?求分析
package LinkedList;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListTest {
public static void main(String[] args) {
/*
* 去除LinkedList中重复的元素
* 思路:
* 1,先创建一个临时容器,用于存储唯一性的元素。
* 2,遍历原容器,将遍历到的元素到临时容器去判断,是否存在。
* 3,如果存在,不存到临时容器中,如果不存在,存储到临时容器中。
* 4,遍历结束后,临时容器中存储的就是唯一性的元素。
* 5,如果需要将这些唯一性的元素保留到原容器中,只要将原容器清空,并将临时容器中的元素添加到原容器中即可。
*
*/
List list = new ArrayList();
list.add("HelloKitty1");
list.add("HelloKitty2");
list.add("HelloKitty1");
list.add("HelloKitty2");
list.add("HelloKitty1");
getSingleElement(list);
for (Iterator it = list.iterator(); it.hasNext();) {
System.out.println(it.next());
}
}
public static void getSingleElement(List list){
//创建一个临时容器
List temp = new ArrayList();
//遍历原容器
for (Iterator it = list.iterator(); it.hasNext();) {
//判断元素是否存在,不存在,就存入临时容器中。
Object obj = it.next();
if(!temp.contains(obj))
temp.add(obj);
}
/*
//遍历结束,清空原容器。
list.clear();
//将临时容器中的元素添加到原容器中
list.addAll(temp); */
list.retainAll(temp);//使用该方法替代先清空再添加的做法。
}
} |
|