歡迎加入我的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中的重複資料。
假設有一個重複的SetSet<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;}