list去重

缺乏、安全感 2022-03-11 08:45 347阅读 0赞

https://blog.csdn.net/persistencegoing/article/details/84376427

最近项目中需要对list集合中的重复值进行处理,大部分是采用两种方法,一种是用遍历list集合判断后赋给另一个list集合,一种是用赋给set集合再返回给list集合。
但是赋给set集合后,由于set集合是无序的,原先的顺序就打乱了。所以我又想着能不能用set的特性进行去重又不打乱顺序呢?
试了一下,也是可以的,几种方法在不同情况下都有各自的优势。现在将代码写出来,比较一下。

  1. //set集合去重,不打乱顺序
  2. public static void main(String\[\] args)\{
  3. List<String> list = new ArrayList<String>();
  4. list.add("aaa");
  5. list.add("bbb");
  6. list.add("aaa");
  7. list.add("aba");
  8. list.add("aaa");
  9. Set set = new HashSet();
  10. List newList = new ArrayList();
  11. for (String cd:list) \{
  12. if(set.add(cd))\{
  13. newList.add(cd);
  14. \}
  15. \}
  16. System.out.println( "去重后的集合: " + newList);
  17. \}
  18. //遍历后判断赋给另一个list集合
  19. public static void main(String\[\] args)\{
  20. List<String> list = new ArrayList<String>();
  21. list.add("aaa");
  22. list.add("bbb");
  23. list.add("aaa");
  24. list.add("aba");
  25. list.add("aaa");
  26. List<String> newList = new ArrayList<String>();
  27. for (String cd:list) \{
  28. if(!newList.contains(cd))\{
  29. newList.add(cd);
  30. \}
  31. \}
  32. System.out.println( "去重后的集合: " + newList);
  33. \}
  34. //set去重
  35. public static void main(String\[\] args)\{
  36. List<String> list = new ArrayList<String>();
  37. list.add("aaa");
  38. list.add("bbb");
  39. list.add("aaa");
  40. list.add("aba");
  41. list.add("aaa");
  42. Set set = new HashSet();
  43. List newList = new ArrayList();
  44. set.addAll(list);
  45. newList.addAll(set);
  46. System.out.println( "去重后的集合: " + newList);
  47. \}
  48. //set去重(缩减为一行)
  49. public static void main(String\[\] args)\{
  50. List<String> list = new ArrayList<String>();
  51. list.add("aaa");
  52. list.add("bbb");
  53. list.add("aaa");
  54. list.add("aba");
  55. list.add("aaa");
  56. List newList = new ArrayList(new HashSet(list));
  57. System.out.println( "去重后的集合: " + newList);
  58. \}

hashset不进行排序,还有一种方法是用treeset,去重并且按照自然顺序排列,将hashset改为treeset就可以了。(原本的顺序是改变的,只是按照字母表顺序排列而已)

//去重并且按照自然顺序排列
List newList = new ArrayList(new TreeSet(list));

转载:https://blog.csdn.net/cs6704/article/details/50158373

发表评论

表情:
评论列表 (有 0 条评论,347人围观)

还没有评论,来说两句吧...

相关阅读

    相关 List

    在日常工作中,需要对 List 进行去重的场景很多。对于我这样一个菜鸟来说,可能能想到的最简单粗暴的方法就是双层循环去重,但是在看到这篇文章之后,果断收藏了。 [https:

    相关 List

    我们知道List允许有相同的元素,那么我们怎么通过方法来让它去重呐, 我们都会想到Set集合,Set集合是不允许有相同的元素的,所以我们可以借助Set集合,把重复的元素去掉

    相关 List

      list中数据的去重,通常使用将list转换为set,简单直接,因为set集合的特点就是没有重复的元素。需要考虑一下两种情况: 1.List集合中的数据类型是基本数据

    相关 List

    思路:   1、先将list转换成HashSet   2、将HashSet再转换成List 源码如下: List<A> list = new ArrayList