去除ArrayList中重复自定义对象元素

JAVA学习网 2017-08-23 06:22:02
 1 /*
 2  * 自定义对象Person类
 3  */
 4     public class Person {
 5     private String name;
 6     private int age;
 7 
 8     public Person(String name, int age) {
 9         super();
10         this.name = name;
11         this.age = age;
12     }
13 
14     public String getName() {
15         return name;
16     }
17 
18     public void setName(String name) {
19         this.name = name;
20     }
21 
22     public int getAge() {
23         return age;
24     }
25 
26     public void setAge(int age) {
27         this.age = age;
28     }
29 
30     @Override
31     public String toString() {
32         return "Person [name=" + name + ", age=" + age + "]";
33     }
34 
35     @Override
36     public boolean equals(Object obj) {//重写equals方法
37         Person per = (Person) obj;
38         if (per.getName().equals(this.name) && per.getAge() == this.age) {
39             return true;
40         }
41         return false;
42     }
43 
44 }

 

 1 import java.util.ArrayList;
 2 import java.util.ListIterator;
 3 
 4 import com.heima.bean.Person;
 5 
 6 /*
 7 * 需求:ArrayList去除集合中自定义对象元素的重复值(对象的成员变量值相同)
 8 * 思路: 重写equals()方法
 9 */
10     public class Demo2_ArrayList {
11     public static void main(String[] args) {
12         ArrayList<Person> list = new ArrayList<Person>();
13         list.add(new Person("张三", 23));
14         list.add(new Person("李四", 24));
15         list.add(new Person("王五", 25));
16         list.add(new Person("赵六", 26));
17         list.add(new Person("张三", 23));
18         list.add(new Person("李四", 24));
19         list.add(new Person("赵六", 26));
20         System.out.println(getSingle(list));
21     }
22 
23     public static ArrayList<Person> getSingle(ArrayList<Person> list) {
24         ArrayList<Person> newArrayList = new ArrayList<Person>();
25         ListIterator<Person> iter = list.listIterator();
26         while (iter.hasNext()) {
27             Person per = (Person) iter.next();
28             if (!newArrayList.contains(per)) {//contains方法判断是否包含,底层依赖equals方法
29                 newArrayList.add(per);          //remove方法判断是否删除,底层依赖的也是equals方法
30             }
31         }
32 
33         return newArrayList;
34 
35     }
36 
37 }

 

阅读(779) 评论(0)