最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java合并兩個相同的List集合的四種方法解析

 更新時間:2024年10月15日 11:14:44   作者:小小野豬  
這篇文章主要給大家介紹了關(guān)于Java合并兩個相同的List集合的四種方法,在Java編程中常需合并兩個List,常用addAll()方法,簡單高效,Java8起可用Stream的concat()方法,并發(fā)場景下,CopyOnWriteArrayList類保證線程安全,Collections.union()合并且去重,需要的朋友可以參考下

引言

在Java編程中,有時我們需要將兩個相同類型的集合合并成一個。尤其是在處理列表(List)時,將兩個具有相同元素類型的List合并成一個新的List是非常常見的需求。這里將介紹幾種有效的方法來合并兩個Java List,并提供詳細(xì)的代碼示例。

1. 使用addAll()方法

方法說明

Java的java.util.List接口提供了addAll()方法,可以直接將一個集合中的所有元素添加到另一個集合中。

示例代碼

import java.util.ArrayList;
import java.util.List;

public class ListMergeExample {
    public static void main(String[] args) {
        // 創(chuàng)建兩個待合并的List
        List<String> list1 = new ArrayList<>();
        list1.add("Apple");
        list1.add("Banana");

        List<String> list2 = new ArrayList<>();
        list2.add("Cherry");
        list2.add("Date");

        // 使用addAll()方法合并兩個List
        list1.addAll(list2);

        System.out.println("合并后的List: " + list1);  // 輸出合并后的列表
    }
}

結(jié)果

合并后的List: [Apple, Banana, Cherry, Date]

2. 使用concat()方法(Java 8及以上版本)

從Java 8開始,可以利用Stream API提供的concat()方法來合并兩個流,進(jìn)而合并兩個List。

示例代碼

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class ListMergeExample {
    public static void main(String[] args) {
        // 創(chuàng)建兩個待合并的List
        List<String> list1 = Arrays.asList("Apple", "Banana");
        List<String> list2 = Arrays.asList("Cherry", "Date");

        // 使用Stream.concat()方法合并兩個List
        List<String> mergedList = Stream.concat(list1.stream(), list2.stream())
                                      .collect(Collectors.toList());

        System.out.println("合并后的List: " + mergedList);
    }
}

結(jié)果

合并后的List: [Apple, Banana, Cherry, Date]

3. 使用CopyOnWriteArrayList類(線程安全場景)

在并發(fā)環(huán)境下,可以使用CopyOnWriteArrayList類,其addAll()方法同樣適用于合并列表,并且保證線程安全。

import java.util.concurrent.CopyOnWriteArrayList;

public class ListMergeExample {
    public static void main(String[] args) {
        // 創(chuàng)建兩個待合并的List
        CopyOnWriteArrayList<String> list1 = new CopyOnWriteArrayList<>();
        list1.add("Apple");
        list1.add("Banana");

        CopyOnWriteArrayList<String> list2 = new CopyOnWriteArrayList<>();
        list2.add("Cherry");
        list2.add("Date");

        // 在線程安全的環(huán)境下合并兩個List
        list1.addAll(list2);

        System.out.println("合并后的List: " + list1);
    }
}

4. 使用Collections.union()靜態(tài)方法

Collections類提供了靜態(tài)方法union(),可以用來合并兩個集合,不過需要注意該方法返回的是Set而非List。

import java.util.*;

public class ListMergeExample {
    public static void main(String[] args) {
        // 創(chuàng)建兩個待合并的List
        List<String> list1 = Arrays.asList("Apple", "Banana");
        List<String> list2 = Arrays.asList("Cherry", "Date");

        // 使用Collections.union()合并,但注意返回的是Set
        Set<String> mergedSet = Collections.unmodifiableSet(
            new HashSet<>(list1));
        mergedSet.addAll(list2);

        // 若需要轉(zhuǎn)換回List
        List<String> mergedList = new ArrayList<>(mergedSet);

        System.out.println("合并后的List (without duplicates): " + mergedList);
    }
}

結(jié)果(不包含重復(fù)項)

合并后的List (without duplicates): [Apple, Banana, Cherry, Date]

在合并兩個Java List時,最常用的是addAll()方法,簡單直接且高效。對于需要處理大量數(shù)據(jù)或者涉及并發(fā)場景,可以考慮使用Stream API或者CopyOnWriteArrayList。同時,若要確保合并過程中去除重復(fù)項,可以結(jié)合使用HashSetCollections.union()方法。

總結(jié)

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

相關(guān)文章

  • 從入門到精通詳解SpringBoot整合MyBatis的全攻略

    從入門到精通詳解SpringBoot整合MyBatis的全攻略

    在 Java 持久層框架的版圖中,MyBatis 無疑占據(jù)著舉足輕重的地位,本文詳細(xì)解析了MyBatis核心架構(gòu),SpringBoot整合方式,動態(tài)SQL與緩存機(jī)制并分頁的方案,希望對大家有一定的幫助
    2026-05-05
  • RocketMQ存儲文件的實現(xiàn)

    RocketMQ存儲文件的實現(xiàn)

    這篇文章主要介紹了RocketMQ存儲文件的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 如何處理器攔截器(HandlerInterceptor)

    如何處理器攔截器(HandlerInterceptor)

    這篇文章主要介紹了如何處理器攔截器(HandlerInterceptor)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • java map中相同的key保存多個value值方式

    java map中相同的key保存多個value值方式

    這篇文章主要介紹了java map中相同的key保存多個value值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java 中 synchronized 的使用方式和鎖升級

    Java 中 synchronized 的使用方式和鎖升級

    Java中的synchronized關(guān)鍵字用于實現(xiàn)線程同步,保證同一時刻只有一個線程可以訪問被同步的代碼塊或方法,JVM引入了鎖升級機(jī)制,從無鎖狀態(tài)開始,根據(jù)競爭情況逐步升級為偏向鎖、輕量級鎖和重量級鎖,以提高性能,感興趣的朋友一起看看吧
    2025-03-03
  • SpringMVC實現(xiàn)注解式權(quán)限驗證的實例

    SpringMVC實現(xiàn)注解式權(quán)限驗證的實例

    本篇文章主要介紹了SpringMVC實現(xiàn)注解式權(quán)限驗證的實例,可以使用Spring MVC中的action攔截器來實現(xiàn),具有一定的參考價值,有興趣的可以了解下。
    2017-02-02
  • SpringSecurity拋出異常但AccessDeniedHandler不生效的解決

    SpringSecurity拋出異常但AccessDeniedHandler不生效的解決

    本文主要介紹了SpringSecurity拋出異常但AccessDeniedHandler不生效的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • IntelliJ IDEA中顯示和關(guān)閉工具欄與目錄欄的方法

    IntelliJ IDEA中顯示和關(guān)閉工具欄與目錄欄的方法

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA中顯示和關(guān)閉工具欄與目錄欄的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Java并發(fā)之嵌套管程鎖死詳解

    Java并發(fā)之嵌套管程鎖死詳解

    這篇文章主要介紹了Java并發(fā)之嵌套管程鎖死詳解,涉及嵌套管程鎖死的發(fā)生,實例等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 如何在maven本地倉庫中添加oracle的jdbc驅(qū)動

    如何在maven本地倉庫中添加oracle的jdbc驅(qū)動

    文章介紹了在Maven項目中添加Oracle數(shù)據(jù)庫驅(qū)動ojdbc5時遇到的問題以及解決問題的兩種方法,方法一為簡單粗暴,但沒有體現(xiàn)Maven倉庫的作用,需要手動管理jar包,方法二為在Maven本地倉庫中添加Oracle的JDBC驅(qū)動,過程較為繁瑣,但配置一次后可以多次使用
    2024-11-11

最新評論

左云县| 汕头市| 盱眙县| 屏南县| 绥中县| 隆德县| 增城市| 铜鼓县| 晋宁县| 开阳县| 交口县| 大埔区| 台北市| 蚌埠市| 涡阳县| 互助| 陈巴尔虎旗| 屏东市| 达日县| 正蓝旗| 阿拉尔市| 简阳市| 武城县| 娄烦县| 嘉荫县| 玉溪市| 房产| 田阳县| 吴堡县| 南部县| 朝阳县| 绥中县| 锡林浩特市| 孟津县| 余干县| 万载县| 栖霞市| 水富县| 霍城县| 郎溪县| 彝良县|