当前位置:   article > 正文

Java合并两个List并去掉重复项

Java合并两个List并去掉重复项

今天在工作中遇到了需要将两个List<String>合并成一个,并去重的功能点。这种需求点很少,但是还真会出现。

下面给大家展示下我是怎么实现的

方法一:使用HashSet

  1. public static void main(String[] args) {
  2. // String[] arr1 = {"str3", "str1", "str2"};
  3. // List<String> list1 = new ArrayList<>(Arrays.asList(arr1));
  4. List<String> list1 = new ArrayList<>();
  5. list1.add("str3");
  6. list1.add("str1");
  7. list1.add("str2");
  8. List<String> list2 = new ArrayList<>();
  9. list2.add("str3");
  10. list2.add("str2");
  11. list2.add("str4");
  12. Set<String> set = new HashSet<>(list1);
  13. set.addAll(list2);
  14. List<String> list = new ArrayList<>(set);
  15. System.out.println(list);
  16. }
  17. // 输出结果为:
  18. // [str3, str4, str1, str2]

可以看出,使用HashSet是不排序的,顺序可能会乱

方法二:使用Stream进行去重,但是仅支持JDK1.8及以上

  1. public static void main(String[] args) {
  2. // String[] arr1 = {"str3", "str1", "str2"};
  3. // List<String> list1 = new ArrayList<>(Arrays.asList(arr1));
  4. List<String> list1 = new ArrayList<>();
  5. list1.add("str3");
  6. list1.add("str1");
  7. list1.add("str2");
  8. List<String> list2 = new ArrayList<>();
  9. list2.add("str3");
  10. list2.add("str2");
  11. list2.add("str4");
  12. List<String> collect = Stream.of(list1, list2)
  13. .flatMap(Collection::stream)
  14. .distinct()
  15. .collect(Collectors.toList());
  16. System.out.println(collect);
  17. }
  18. // 输出
  19. // [str3, str1, str2, str4]

比较小众的写法,但是真的好用,而且看起来更简洁

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/1020301
推荐阅读
相关标签
  

闽ICP备14008679号