为了账号安全,请及时绑定邮箱和手机立即绑定

java的List中有没有提供list去除重复项的API方法,查了下JDK貌似没有

java的List中有没有提供list去除重复项的API方法,查了下JDK貌似没有

动漫人物 2019-03-21 18:15:55
如题:java的List中有没有提供list去除重复项的API方法,查了下JDK貌似没有?忘了补充了,我是去除重复的内容。统一回复:基本数据类型的去重可以用你们提供的方法,但是对象的去重还需要一个个的遍历迭代。难道不是么?
查看完整描述

5 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

只能说没有直接的API去删除重复项,但利用HashSet不能包含重复项,可以去除list的重复项。


public static void removeDuplicate(List list) {

      HashSet h = new HashSet(list);

      list.clear();

      list.addAll(h);

      System.out.println(list);

}

上面这个方法能去除List的重复项,但List原来的顺序会被打乱。如果不想在去除重复项的时候,还想保持原有的顺序,则可以用下面这种方式:


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);

 }

参考这里


查看完整回答
反对 回复 2019-04-20
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

不想要重复项,应该用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至了


查看完整回答
反对 回复 2019-04-20
?
函数式编程

TA贡献1807条经验 获得超9个赞

java.util.Set里的项是不可以重复的,你可以利用这一点来去重


查看完整回答
反对 回复 2019-04-20
?
心有法竹

TA贡献1866条经验 获得超5个赞

通过Set来实现,有很多方法可以选择


查看完整回答
反对 回复 2019-04-20
  • 5 回答
  • 0 关注
  • 739 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信