欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java合并兩個List后并去掉重復項的兩種做法

 更新時間:2023年10月24日 09:20:50   作者:逆流°只是風景-bjhxcc  
工作中很多時候需要用到合并兩個List并去除其中的重復內(nèi)容,這是一個很簡單的操作,實現(xiàn)的方法也多種多樣,這篇文章主要給大家介紹了關于Java合并兩個List后并去掉重復項的兩種做法,需要的朋友可以參考下

前言

工作中很多時候需要用到合并兩個List并去除其中的重復內(nèi)容,這是一個很簡單的操作,實現(xiàn)的方法也多種多樣。

下面以具體實例展示給大家~

一、使用stream方式進行去重(需要jdk1.8及以上)

String[] arr1 = {"a", "b", "c", "d", "e", "f"};
List<String> listA = new ArrayList<>(Arrays.asList(arr1));
 
String[] arr2 = {"d", "e", "f", "g", "h"};
List<String> listB = new ArrayList<>(Arrays.asList(arr2));

List<String> collect = Stream.of(listA, listB)
                .flatMap(Collection::stream)
                .distinct()
                .collect(Collectors.toList());

可以很清楚的看出通過Stream完成的代碼看上去更加簡潔流暢

二、使用HashSet集合的方式進行去重

String[] arr1 = {"a", "b", "c", "d", "e", "f"};
List<String> listA = new ArrayList<>(Arrays.asList(arr1));

String[] arr2 = {"d", "e", "f", "g", "h"};
 List<String> listB = new ArrayList<>(Arrays.asList(arr2));

Set<String> set = new HashSet<>(listA);
set.addAll(listB);
List<String> list = new ArrayList<>(set);
System.out.println(list);

這樣做后的list就是合并并去重后的結果

附:利用Java 8的Map.merge()方法

Java 8中的Map類提供了一個merge()方法,可以方便地對Map中的鍵值對進行合并操作。我們可以先將需要保留的List中的元素轉換成一個Map,然后遍歷另一個List進行合并操作。

示例代碼如下:

使用 Java 8 的 Stream API,結合 Collectors.toMap() 和 merge() 方法來實現(xiàn)。具體實現(xiàn)步驟如下:

將兩個 list 合并為一個 list;

將合并后的 list 轉為 Stream;

使用 Collectors.toMap() 方法將 Stream 中的元素轉為 Map;

在 toMap() 方法中指定 key 和 value,對于重復的 key,使用 merge() 方法合并 value;

將 Map 中的 value 轉為 list,作為最終的結果。

下面是代碼示例:

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class MergeListExample {

    public static void main(String[] args) {
        List<String> list1 = new ArrayList<>();
        list1.add("A");
        list1.add("B");
        list1.add("C");
        list1.add("D");

        List<String> list2 = new ArrayList<>();
        list2.add("C");
        list2.add("D");
        list2.add("E");
        list2.add("F");

        List<String> mergedList = mergeLists(list1, list2);

        System.out.println("Merged list with duplicates: " + mergedList);

        List<String> distinctList = mergedList.stream().distinct().collect(Collectors.toList());

        System.out.println("Distinct merged list: " + distinctList);
    }

    private static List<String> mergeLists(List<String> list1, List<String> list2) {
        List<String> mergedList = new ArrayList<>(list1);
        mergedList.addAll(list2);
        Map<String, String> map = mergedList.stream()
                .collect(Collectors.toMap(s -> s, s -> s, (s1, s2) -> s1));
        return new ArrayList<>(map.values());
    }
}

該示例中,我們首先定義了兩個 list,然后調(diào)用了 mergeLists() 方法來合并兩個 list 并去重。在該方法中,我們先將兩個 list 合并為一個 list,然后將其轉為 Stream。接著使用 Collectors.toMap() 方法將 Stream 中的元素轉為 Map,并在 toMap() 方法中指定 key 和 value,對于重復的 key,使用 merge() 方法合并 value。最后將 Map 中的 value 轉為 list,作為最終的結果。

輸出結果如下:

Merged list with duplicates: [A, B, C, D, C, D, E, F]
Distinct merged list: [A, B, C, D, E, F]

總結

到此這篇關于Java合并兩個List后并去掉重復項的兩種做法的文章就介紹到這了,更多相關Java合并List并去掉重復項內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 整理總結Java多線程程序編寫的要點

    整理總結Java多線程程序編寫的要點

    這篇文章主要介紹了Java多線程程序編寫的要點,包括線程的狀態(tài)控制和優(yōu)先級以及線程的通信問題等方面,非常之全面!需要的朋友可以參考下
    2016-01-01
  • java應用占用內(nèi)存過高排查的解決方案

    java應用占用內(nèi)存過高排查的解決方案

    這篇文章主要介紹了java應用占用內(nèi)存過高排查的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • MyBatis之傳入?yún)?shù)為list、數(shù)組、map的寫法

    MyBatis之傳入?yún)?shù)為list、數(shù)組、map的寫法

    這篇文章主要介紹了MyBatis之傳入?yún)?shù)為list、數(shù)組、map的寫法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 代碼實例Java IO判斷目錄和文件是否存在

    代碼實例Java IO判斷目錄和文件是否存在

    本篇文章給大家分享了Java IO判斷目錄和文件是否存在的代碼,對此有需要的讀者們可以跟著小編一起學習下。
    2018-02-02
  • 一個處理用戶登陸的servlet簡單實例

    一個處理用戶登陸的servlet簡單實例

    這篇文章主要介紹了一個處理用戶登陸的servlet簡單實例,可通過servlet實現(xiàn)處理用戶登錄的功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • 使用Java應用程序添加或刪除 PDF 中的附件

    使用Java應用程序添加或刪除 PDF 中的附件

    當我們在制作PDF文件或者PPT演示文稿的時候,為了讓自己的文件更全面詳細,就會在文件中添加附件,那么如何添加或刪除PDF中的附件呢,今天通過本文給大家詳細講解,需要的朋友參考下吧
    2023-01-01
  • Java多線程實戰(zhàn)之交叉打印的兩種方法

    Java多線程實戰(zhàn)之交叉打印的兩種方法

    今天小編就為大家分享一篇關于Java多線程實戰(zhàn)之交叉打印的兩種方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • SpringCloud讓微服務實現(xiàn)指定程序調(diào)用

    SpringCloud讓微服務實現(xiàn)指定程序調(diào)用

    這篇文章主要介紹了SpringCloud讓微服務實現(xiàn)指定程序調(diào)用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Spring中的Sentinel熔斷降級詳解

    Spring中的Sentinel熔斷降級詳解

    這篇文章主要介紹了Spring中的Sentinel熔斷降級詳解,熔斷降級是一種保護系統(tǒng)穩(wěn)定性和可用性的機制,旨在防止故障的擴散和蔓延,提高用戶體驗和信任度,需要的朋友可以參考下
    2023-09-09
  • mybatis中如何使用小于號

    mybatis中如何使用小于號

    這篇文章主要介紹了mybatis中如何使用小于號問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論