当前位置: 首页 > news >正文

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

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

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

方法一:使用HashSet

    public static void main(String[] args) {
//        String[] arr1 = {"str3", "str1", "str2"};
//        List<String> list1 = new ArrayList<>(Arrays.asList(arr1));List<String> list1 = new ArrayList<>();list1.add("str3");list1.add("str1");list1.add("str2");List<String> list2 = new ArrayList<>();list2.add("str3");list2.add("str2");list2.add("str4");Set<String> set = new HashSet<>(list1);set.addAll(list2);List<String> list = new ArrayList<>(set);System.out.println(list);
}
// 输出结果为:
// [str3, str4, str1, str2]

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

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

    public static void main(String[] args) {
//        String[] arr1 = {"str3", "str1", "str2"};
//        List<String> list1 = new ArrayList<>(Arrays.asList(arr1));List<String> list1 = new ArrayList<>();list1.add("str3");list1.add("str1");list1.add("str2");List<String> list2 = new ArrayList<>();list2.add("str3");list2.add("str2");list2.add("str4");List<String> collect = Stream.of(list1, list2).flatMap(Collection::stream).distinct().collect(Collectors.toList());System.out.println(collect);}// 输出
// [str3, str1, str2, str4]

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


http://www.mrgr.cn/news/8948.html

相关文章:

  • Challenge——spfa
  • docker映射了端口,宿主机不生效
  • @RequestBody:Spring MVC中的请求体解析利器
  • hal DMA
  • Elasticsearch 8 RAG 技术分享
  • Java笔试面试题AI答之集合(3)
  • 工厂现场多功能帮手,三防平板改善管理体验
  • thinkphp8 定时任务 addOption
  • 详谈进程等待
  • 嵌入式音视频码率控制及分享个工作遇到的类似问题
  • 实用工具:[TrafficMonitor]任务栏电脑性能监控安装指南
  • 001 Routing and Switching(路由与交换)基础概念入门
  • Azure OpenAI citations with message correlation
  • npm install报错,解决记录
  • 声卡OTG:数字音频传输的新纪元
  • Spring Cloud(面试篇)
  • [mysql][sql]安装完mysql8跨主机不能访问解决办法
  • 微信小游戏授权问题
  • 从零基础学Go(九)——Go的Goroutine
  • qt-PLC可视化编辑器