ArrayList去除集合中自定义对象元素的重复值_对象的成员变量值相同
1 package com.jh.bean; 2 3 public class Person { 4 private String name; 5 private int age; 6 public Person() { 7 super(); 8 // TODO Auto-generated constructor stub 9 } 10 public Person(String name, int age) { 11 super(); 12 this.name = name; 13 this.age = age; 14 } 15 /** 16 * @return the name 17 */ 18 public String getName() { 19 return name; 20 } 21 /** 22 * @param name the name to set 23 */ 24 public void setName(String name) { 25 this.name = name; 26 } 27 /** 28 * @return the age 29 */ 30 public int getAge() { 31 return age; 32 } 33 /** 34 * @param age the age to set 35 */ 36 public void setAge(int age) { 37 this.age = age; 38 } 39 /* (non-Javadoc) 40 * @see java.lang.Object#toString() 41 */ 42 @Override 43 public String toString() { 44 return "Person [name=" + name + ", age=" + age + "]"; 45 } 46 /* (non-Javadoc) 47 * @see java.lang.Object#equals(java.lang.Object) 48 */ 49 @Override 50 public boolean equals(Object obj) { 51 Person p = (Person) obj; 52 return this.name.equals(p.name) && this.age == p.age; 53 } 54 55 }
1 package com.jh.list; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 6 import com.jh.bean.Person; 7 @SuppressWarnings({ "rawtypes", "unchecked" }) 8 9 public class jh_02_ArrayList去除集合中自定义对象元素的重复值_对象的成员变量值相同 { 10 /* * A:案例演示 11 * 需求:ArrayList去除集合中自定义对象元素的重复值(对象的成员变量值相同) 12 * B:注意事项 13 * 重写equals()方法的 14 contains方法判断是否包含,底层依赖的是equals方法 15 remove方法判断是否删除,底层依赖的是equals方法 16 */ 17 18 public static void main(String[] args) { 19 ArrayList list = new ArrayList(); 20 21 list.add(new Person("张三",23)); 22 list.add(new Person("李四",24)); 23 list.add(new Person("李四",24)); 24 list.add(new Person("李四",24)); 25 list.add(new Person("张三",23)); 26 list.add(new Person("王五",25)); 27 list.add(new Person("王五",25)); 28 list.add(new Person("王五",25)); 29 list.add(new Person("张三",23)); 30 list.add(new Person("张三",23)); 31 list.add(new Person("张三",23)); 32 list.add(new Person("张三",23)); 33 34 ArrayList newList = getSingle(list); 35 System.out.println(newList); 36 } 37 38 39 /** 40 * 创建新集合将重复元素去掉 41 * 1:返回值类型,ArrayList 42 * 2:参数列表, ArrayList 43 * 44 * 分分析: 45 * 1:创建新集合 46 * 2:传入老集合,获取迭代器。 47 * 3:迭代老集合, 48 * 4:通过信集合判断是否包含 contains 老集合中的元素 49 * 如果包含就不添加; 如果不包含就添加。 50 * 51 * 5:返回新集合对象 52 */ 53 public static ArrayList getSingle(ArrayList list) { 54 // 1:创建新集合 55 ArrayList newList = new ArrayList(); 56 Iterator it = list.iterator();// 传入老集合,获取迭代器。 57 58 while(it.hasNext()) { 59 Object obj = it.next(); 60 if(!newList.contains(obj)) {//contains方法判断是否包含,底层依赖的是equals方法 61 newList.add(obj);//不包含就添加 62 } 63 } 64 return newList;// 5:返回新集合对象 65 } 66 }