ArrayList去重

 1 import java.util.ArrayList;
 2 import java.util.List;
 3 
 4 public class ArrayList_Test {
 5     public static void main(String[] args) {
 6         List<Student> stus = new ArrayList<>();
 7 
 8         stus.add(new Student("zhangsan"));
 9         stus.add(new Student("lisi"));
10         stus.add(new Student("zhangsan"));
11         stus.add(new Student("zhangsan"));
12         stus.add(new Student("wangwu"));
13 //   第一种
14 //        for (int i = 0; i < stus.size() - 1; i++) {
15 //            for (int j = i + 1; j < stus.size()-1; j++) {
16 //                if (stus.get(i).getName().equals(stus.get(j).getName())) {
17 //                    stus.remove(stus.get(i));
18 //                }
19 //            }
20 //        }
21 //        System.out.println(stus);
22 //        第二种
23 //        定义一个新集合
24         List<Student> stus2 = new ArrayList<>();
25         for (int i = 0; i < stus.size(); i++) {
26             if (!stus2.contains(stus.get(i))) {// 内部调用了equals方法,所以比的是栈中的引用地址,所以要重写equals方法
27                 stus2.add(stus.get(i));
28             }
29         }
30         System.out.println(stus2);
31 
32     }
33 }
34 
35 class Student {
36     String name;
37 
38     public Student(String name) {
39         this.name = name;
40     }
41 
42     public String getName() {
43         return name;
44     }
45 
46     public void setName(String name) {
47         this.name = name;
48     }
49 
50     @Override
51     public String toString() {
52         return "Student [name=" + name + "]";
53     }
54 
55     @Override
56     public int hashCode() {
57         final int prime = 31;
58         int result = 1;
59         result = prime * result + ((name == null) ? 0 : name.hashCode());
60         return result;
61     }
62 
63     @Override
64     public boolean equals(Object obj) {
65         if (this == obj)
66             return true;
67         if (obj == null)
68             return false;
69         if (getClass() != obj.getClass())
70             return false;
71         Student other = (Student) obj;
72         if (name == null) {
73             if (other.name != null)
74                 return false;
75         } else if (!name.equals(other.name))
76             return false;
77         return true;
78     }
79 
80 }

 

posted @ 2019-04-10 08:37  我差两天十八岁  阅读(928)  评论(0编辑  收藏  举报