列表(List)是可以允许出现重复的元素, 但是如果现在就要求使用List并且集合中不存在重复的元素
需求:要求容器中的元素保证唯一性
思路
1.先创建一个临时容器,用于存储惟一性的元素
2.遍历原容器,将遍历到的元素到临时容器中去判断,是否存在
3.如果存在不存储到临时容器中,如果不存在,存储到临时容器中
4.遍历结束后,临时容器中的元素就是惟一性的元素
5.如果需要将这些惟一性的元素保存在原容器中,只要将原容器清空,将临时容器中的元素添加到原容器中
代码:
package Collection;
import java.util.*;
/*
使用List 但是要保证集合中的元素的惟一性
需求:去除 List 集合中的重复
*/
public class SingleElemen_List {
public static void main(String[] args){
List list = new ArrayList();
list.add("itcast1");
list.add("itcast2");
list.add("itcast1");
list.add("itcast2");
list.add("itcast1");
getSingleElement(list);
System.out.println(list);
}
//创建去除重复元素的函数
public static void getSingleElement(List list) {
//1.创建临时容器
List temp = new ArrayList();
//2.遍历原容器
for (Iterator it = list.iterator(); it.hasNext(); ) {
Object obj = it.next();
//3.判断临时容器中是否存在遍历到的元素
if (!temp.contains(obj)) {
temp.add(obj);
}
}
//4.遍历结束,所有惟一性的元素都已经存储在了临时容器中
//5.清空原容器,降临时容器中的元素添加到原容器中
list.clear();
list.addAll(temp);
}
}
运行结果:[itcast1, itcast2]
List 集合去重复的关键:contains() :判断是否包含的底层代码其实是使用了 equals() 方法
当元素不是字符串而是自定义类时:包含的判断依据是自定义类的 equals() 定义的规则
存储自定义的学生对象,相等的规则是:名字和年龄相同
list.add(new Student("Lisi",20));
list.add(new Student("Zhangshan",25));
list.add(new Student("Lisi",20));
list.add(new Student("Wangwu",18));
运行结果:[Lisi 20, Zhangshan 25, Wangwu 18]