欢迎加入我的QQ交流群425783133
摘要
使用HashSet实现Set集合,集合中存放的对象有重复,重复条件是自定义的。如何去除Set中的重复对象?
-
方案一
-
对bean重写其equals和hashcode。
-
@Override public int hashCode() { return gradeType.hashCode(); } @Override public boolean equals(Object obj) { if(obj instanceof ExamGradeStateBean) { ExamGradeStateBean state = (ExamGradeStateBean) obj; return (state. gradeType.equals( gradeType)); } return super.equals(obj); }
编写一个方法,过滤Set中的重复数据。
假设有一个重复的Set Set<Person> set = new HashSet<Person>(); set.add( new Person(1, "p1")); set.add( new Person(2, "p2")); set.add( new Person(3, "p3")); set.add( new Person(4, "p2")); set.add( new Person(5, "p3")); set.add( new Person(6, "p4")); //去除set中重复数据的方法 private static Set<Person> removeDuplicate(Set<Person> set) { Map<String, Person> map = new HashMap<String, Person>(); Set<Person> tempSet = new HashSet<Person>(); for(Person p : set) { if(map.get(p.getName()) == null ) { map.put(p.getName(), p); } else { tempSet.add(p); } } set.removeAll(tempSet); return set; }