您的位置:首页 > 其它

list集合去除重复对象

2016-11-05 16:59 369 查看
对象重复是指对象里面的变量的值都相等,并不定是地址

public class Student {
02.
03.public String id;
04.public String name;
05.public Student() {
06.}
07.public Student(String id,String name) {
08.this.id = id;
09.this.name = name;
10.}
11.public String getId() {
12.return id;
13.}
14.public void setId(String id) {
15.this.id = id;
16.}
17.public String getName() {
18.return name;
19.}
20.public void setName(String name) {
21.this.name = name;
22.}
23.@Override
24.public boolean equals(Object obj) {
25.Student s=(Student)obj;
26.return id.equals(s.id) && name.equals(s.name);
27.}
28.@Override
29.public int hashCode() {
30.String in = id + name;
31.return in.hashCode();
32.}
33.}

import java.util.ArrayList;
02.import java.util.HashSet;
03.import java.util.List;
04.import java.util.Set;
05.
06.public class QuSame {
07.
08.    public static void main(String[] args) {
09.        List<Student> stu = new ArrayList<Student>();
10.        stu.add(new Student("1","yi"));
11.        stu.add(new Student("3","san"));
12.        stu.add(new Student("3","san"));
13.        stu.add(new Student("2","er"));
14.        stu.add(new Student("2","er"));
15.        //set集合保存的是引用不同地址的对象
16.        Set<Student> ts = new HashSet<Student>();
17.        ts.addAll(stu);
18.
19.        for (Student student : ts) {
20.            System.out.println(student.getId()+"-"+student.getName());
21.        }
22.    }
23.}


list集合存储的类型是基础类型还比较好办,直接把list集合转换成set集合就会自动去除。 当set集合存储的是对象类型时,需要在对象的实体类里面重写public boolean equals(Object obj) {} 和 public int hashCode() {} 两个方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: