public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println(list);
}
只能说没有直接的API去删除重复项,但利用
HashSet不能包含重复项,可以去除list的重复项。上面这个方法能去除List的重复项,但List原来的顺序会被打乱。如果不想在去除重复项的时候,还想保持原有的顺序,则可以用下面这种方式:
参考这里
没有直接的API
建议这样:
补充,看了楼主的代码,要实现去除有相同name和sex的内容,需要重写equals和hashcode方法,用eclipse的话直接
generat code里面选hashcode和equals,然后选择name和sex属性,生成就可以了hashcode和equals的关系和用处参考这里
去重并遍历的代码改成
不想要重复项,应该用
Set吧,干嘛用List补充:
拿自己写一个也不累,来来来:
java.util.Set里的项是不可以重复的,你可以利用这一点来去重通过Set来实现,有很多方法可以选择
treeSet可以去重且保证顺序