第一种,List<Integer> , List<String> 用set去重时,无需重写equals方法
List<Integer> list = new ArrayList<Integer>();
for (int i = 0 ; i < 10 ; i++ ) {
list.add(i);
}
list.add(3);
list.add(5);
for (int m = 0 ; m < list.size() ; m++ ) {
System.out.println("list的内容是:"+list.get(m));
}
Set<Integer> set = new HashSet<Integer>();
for(int j = 0 ; j < list.size() ; j++ ){
set.add(list.get(j));
}
//第一种:用Iterator遍历
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
Integer str = it.next();
System.out.println("set用Iterator遍历的内容是:"+str);
}
//第二种:for循环遍历:
for (Integer str : set) {
System.out.println("第二种遍历:"+str);
}
达到去重了效果
第二种,当是对象时,即List<Person>去重时,必须所有属性的值相同,必须在实体中重写equals以及hashCode方法//对象列表
List<Person> perList = new ArrayList<Person>();
//创建各种对象,初始化数据
Person p1 = new Person();
p1.setId(1);
p1.setName("zhang");
p1.setAge(22);
perList.add(p1);
Person p2 = new Person();
p2.setId(2);
p2.setName("san");
p2.setAge(22);
perList.add(p2);
Person p3 = new Person();
p3.setId(3);
p3.setName("zhangsan");
p3.setAge(22);
perList.add(p3);
Person p4 = new Person();
p4.setId(4);
p4.setName("zs");
p4.setAge(22);
perList.add(p4);
Person p5 = new Person();
p5.setId(5);
p5.setName("zhangs");
p5.setAge(22);
perList.add(p5);
Person p6 = new Person();
p6.setId(1);
p6.setName("zhang");
p6.setAge(22);
perList.add(p6);
Set<Person> pSet = new HashSet<Person>();
for(Person pe : perList){
System.out.println("List遍历输出:"+pe.toString());
pSet.add(pe);
}
for (Person p : pSet) {
System.out.println("转换成set后:"+p.toString());
}
/**
* 输出结果
*/
// List遍历输出:Person [id=1, age=22, name=zhang]
// List遍历输出:Person [id=2, age=22, name=san]
// List遍历输出:Person [id=3, age=22, name=zhangsan]
// List遍历输出:Person [id=4, age=22, name=zs]
// List遍历输出:Person [id=5, age=22, name=zhangs]
// List遍历输出:Person [id=1, age=22, name=zhang]
// 转换成set后:Person [id=5, age=22, name=zhangs]
// 转换成set后:Person [id=4, age=22, name=zs]
// 转换成set后:Person [id=1, age=22, name=zhang]
// 转换成set后:Person [id=3, age=22, name=zhangsan]
// 转换成set后:Person [id=2, age=22, name=san]
同样达到了去重效果