Java合并兩個相同的List集合的四種方法解析
引言
在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é)合使用HashSet或Collections.union()方法。
總結(jié)
到此這篇關(guān)于Java合并兩個相同的List集合的四種方法的文章就介紹到這了,更多相關(guān)Java合并兩個相同List集合內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
從入門到精通詳解SpringBoot整合MyBatis的全攻略
在 Java 持久層框架的版圖中,MyBatis 無疑占據(jù)著舉足輕重的地位,本文詳細(xì)解析了MyBatis核心架構(gòu),SpringBoot整合方式,動態(tài)SQL與緩存機(jī)制并分頁的方案,希望對大家有一定的幫助2026-05-05
SpringMVC實現(xiàn)注解式權(quán)限驗證的實例
本篇文章主要介紹了SpringMVC實現(xiàn)注解式權(quán)限驗證的實例,可以使用Spring MVC中的action攔截器來實現(xiàn),具有一定的參考價值,有興趣的可以了解下。2017-02-02
SpringSecurity拋出異常但AccessDeniedHandler不生效的解決
本文主要介紹了SpringSecurity拋出異常但AccessDeniedHandler不生效的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
IntelliJ IDEA中顯示和關(guān)閉工具欄與目錄欄的方法
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA中顯示和關(guān)閉工具欄與目錄欄的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10
如何在maven本地倉庫中添加oracle的jdbc驅(qū)動
文章介紹了在Maven項目中添加Oracle數(shù)據(jù)庫驅(qū)動ojdbc5時遇到的問題以及解決問題的兩種方法,方法一為簡單粗暴,但沒有體現(xiàn)Maven倉庫的作用,需要手動管理jar包,方法二為在Maven本地倉庫中添加Oracle的JDBC驅(qū)動,過程較為繁瑣,但配置一次后可以多次使用2024-11-11

