Java合并兩個相同的List集合的四種方法解析
引言
在Java編程中,有時我們需要將兩個相同類型的集合合并成一個。尤其是在處理列表(List)時,將兩個具有相同元素類型的List合并成一個新的List是非常常見的需求。這里將介紹幾種有效的方法來合并兩個Java List,并提供詳細的代碼示例。
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()
方法來合并兩個流,進而合并兩個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)文章
解決RedisTemplate調(diào)用increment報錯問題
這篇文章主要介紹了解決RedisTemplate調(diào)用increment報錯問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11二種jar包制作方法講解(dos打包jar eclipse打包jar文件)
這篇文章主要介紹了二種jar包制作方法講解:dos打包jar和eclipse打包jar文件,大家參考使用吧2013-11-11SpringBoot集成WebSocket實現(xiàn)后臺向前端推送信息
在一次項目開發(fā)中,使用到了Netty網(wǎng)絡(luò)應(yīng)用框架,以及MQTT進行消息數(shù)據(jù)的收發(fā),這其中需要后臺來將獲取到的消息主動推送給前端,所以本文記錄了SpringBoot集成WebSocket實現(xiàn)后臺向前端推送信息的操作,需要的朋友可以參考下2024-02-02idea創(chuàng)建spring?boot項目時javaversion只能選擇17和21解決辦法
這篇文章主要給大家介紹了關(guān)于idea創(chuàng)建spring?boot項目時javaversion只能選擇17和21的解決辦法,文中通過代碼介紹的非常詳細,對大家學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01spring?boot只需兩步優(yōu)雅整合activiti示例解析
這篇文章主要主要來教大家spring?boot優(yōu)雅整合activiti只需兩步就可完成測操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進步2022-03-03idea如何debug看springsecurity的過濾器順序
這篇文章主要介紹了idea如何debug看springsecurity的過濾器順序,文中通過圖文結(jié)合的方式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-04-04