如题:
java的List中有没有提供list去除重复项的API方法,查了下JDK貌似没有?忘了补充了,我是去除重复的内容。
统一回复:
基本数据类型的去重可以用你们提供的方法,但是对象的去重还需要一个个的遍历迭代。难道不是么?
如题:
java的List中有没有提供list去除重复项的API方法,查了下JDK貌似没有?忘了补充了,我是去除重复的内容。
统一回复:
基本数据类型的去重可以用你们提供的方法,但是对象的去重还需要一个个的遍历迭代。难道不是么?
没有直接的API
建议这样:
List<Integer> list = ...;
list = new ArrayList<Integer>(new HashSet<Integer>(list));
补充,看了楼主的代码,要实现去除有相同name和sex的内容,需要重写equals和hashcode方法,用eclipse的话直接generat code
里面选hashcode和equals
,然后选择name和sex属性,生成就可以了
hashcode和equals的关系和用处参考这里
去重并遍历的代码改成
for (Person p : new HashSet<Person>(list)) {
System.out.println(p.toString());
}
不想要重复项,应该用Set
吧,干嘛用List
补充:
拿自己写一个也不累,来来来:
List<String> origin = new ArrayList<>();
Set<String> handle = new HashSet<>();
//把origin里的所有元素放进handle去,因为handle是Set类,会自动去重
handle.addAll(al);
//把origin清空
origin.clear();
//再从handle里把去重之后的内容都放回origin里
origin.addAll(handle);
这下你就high至了
15 回答8.4k 阅读
8 回答6.2k 阅读
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
2 回答2.8k 阅读✓ 已解决
只能说没有直接的API去删除重复项,但利用
HashSet
不能包含重复项,可以去除list的重复项。上面这个方法能去除List的重复项,但List原来的顺序会被打乱。如果不想在去除重复项的时候,还想保持原有的顺序,则可以用下面这种方式:
参考这里