Java多種方法實(shí)現(xiàn)合并多個(gè)list對(duì)象列表
在 Java 中,將多個(gè)對(duì)象的列表數(shù)據(jù)合并成一個(gè)新的列表可以通過多種方式實(shí)現(xiàn)。假設(shè)有一個(gè) List
的列表,每個(gè)列表都包含相同類型的對(duì)象,可以使用 Stream
API 或傳統(tǒng)的循環(huán)來實(shí)現(xiàn)這一目標(biāo)。
示例代碼User 類
假設(shè)我們有一個(gè) User
類:
public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User{name='" + name + "', age=" + age + "}"; } }
使用 Stream API
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class MergeListsExample { public static void main(String[] args) { List<User> list1 = Arrays.asList( new User("Alice", 30), new User("Bob", 25) ); List<User> list2 = Arrays.asList( new User("Charlie", 35), new User("Diana", 28) ); List<User> list3 = Arrays.asList( new User("Eve", 22), new User("Frank", 31) ); List<List<User>> listOfLists = Arrays.asList(list1, list2, list3); // 使用 Stream API 合并列表 List<User> mergedList = listOfLists.stream() .flatMap(List::stream) .collect(Collectors.toList()); // 輸出合并后的列表 mergedList.forEach(System.out::println); } }
使用傳統(tǒng)循環(huán)
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class MergeListsExample { public static void main(String[] args) { List<User> list1 = Arrays.asList( new User("Alice", 30), new User("Bob", 25) ); List<User> list2 = Arrays.asList( new User("Charlie", 35), new User("Diana", 28) ); List<User> list3 = Arrays.asList( new User("Eve", 22), new User("Frank", 31) ); List<List<User>> listOfLists = Arrays.asList(list1, list2, list3); // 使用傳統(tǒng)循環(huán)合并列表 List<User> mergedList = new ArrayList<>(); for (List<User> list : listOfLists) { mergedList.addAll(list); } // 輸出合并后的列表 mergedList.forEach(System.out::println); } }
解釋
定義 User
類:
User
類包含name
和age
屬性,并提供相應(yīng)的 getter 和 setter 方法。- 重寫了
toString
方法以便于輸出。
創(chuàng)建多個(gè) List
:
- 創(chuàng)建了三個(gè)
List<User>
對(duì)象,每個(gè)列表包含幾個(gè)User
對(duì)象。
使用 Stream
API 合并列表:
listOfLists.stream()
:將List<List<User>>
轉(zhuǎn)換為Stream<List<User>>
。flatMap(List::stream)
:將每個(gè)List<User>
轉(zhuǎn)換為Stream<User>
,并將其展平為一個(gè)單一的Stream<User>
。collect(Collectors.toList())
:將Stream<User>
收集為一個(gè)List<User>
。
使用傳統(tǒng)循環(huán)合并列表:
- 創(chuàng)建一個(gè)空的
ArrayList<User>
用于存儲(chǔ)合并后的數(shù)據(jù)。 - 遍歷
listOfLists
,將每個(gè)子列表中的元素添加到mergedList
中。
輸出
無論使用 Stream
API 還是傳統(tǒng)循環(huán),最終的輸出都是相同的:
User{name='Alice', age=30} User{name='Bob', age=25} User{name='Charlie', age=35} User{name='Diana', age=28} User{name='Eve', age=22} User{name='Frank', age=31}
總結(jié)
在Java編程中,合并多個(gè)列表對(duì)象可以通過Stream API或傳統(tǒng)循環(huán)方式實(shí)現(xiàn),使用Stream API進(jìn)行合并時(shí),可利用flatMap方法將嵌套的List展平,再通過collect方法收集成一個(gè)新的列表,傳統(tǒng)循環(huán)則通過創(chuàng)建一個(gè)空的ArrayList,并通過遍歷每個(gè)列表將元素添加進(jìn)去,兩種方法都能有效合并列表,并保持?jǐn)?shù)據(jù)類型一致。
到此這篇關(guān)于Java多種方法實(shí)現(xiàn)合并多個(gè)對(duì)象列表的文章就介紹到這了,更多相關(guān)Java合并多個(gè)對(duì)象列表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Cloud服務(wù)入口Gateway的介紹和使用問題小結(jié)
Spring Cloud Gateway是Spring Cloud的?個(gè)全新的API?關(guān)項(xiàng)?, 基于Spring + SpringBoot等技術(shù)開發(fā), ?的是為了替換掉Zuul,這篇文章主要介紹了Spring Cloud服務(wù)入口Gateway的介紹和使用問題小結(jié),需要的朋友可以參考下2025-03-03springboot項(xiàng)目不加端口號(hào)也可以訪問項(xiàng)目的方法步驟分析
這篇文章主要介紹了springboot項(xiàng)目不加端口號(hào)也可以訪問項(xiàng)目的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04java使用ffmpeg實(shí)現(xiàn)上傳視頻的轉(zhuǎn)碼提取視頻的截圖等功能(代碼操作)
這篇文章主要介紹了java使用ffmpeg實(shí)現(xiàn)上傳視頻的轉(zhuǎn)碼,提取視頻的截圖等功能,本文圖文并茂給大家介紹的非常詳細(xì),對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03SpringBoot集成Mybatis-Plus多租戶架構(gòu)實(shí)現(xiàn)
本文主要介紹了SpringBoot集成Mybatis-Plus多租戶架構(gòu)實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09