亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Streams 將 List<Object> 轉換為另一個 List

使用 Streams 將 List<Object> 轉換為另一個 List

小怪獸愛吃肉 2023-05-24 16:00:37
我有以下問題。我熟悉使用 java 7 執行以下操作的傳統方法,但嘗試使用 java8 流或 forEach 來完成此操作以獲得更好的可讀性和更少的代碼行。目的: public class Object {   private String id;   private String userName;   private String address;   private String email; //getters and setters}現在,我有一個如下所示的對象列表:List<Object> list = new ArrayList<>();Object obj = new Object();obj.setId(12);obj.setUserName("myName");obj.setAddress("address");obj.setEmail("email");Object obj1 = new Object();obj1.setId(12);obj1.setUserName("myName1");obj1.setAddress("address1");obj1.setEmail("email1");list.add(obj);list.add(obj1);我有另一個對象用戶:public class User {      private String userName;       private String address;       private String email;   //getters and setters}結果對象:public class ResultObject{     private String id;     private List<User> user;   //getters and setters}現在對于列表中的每個對象,我想按 id 對它們進行分組,并將相應的電子郵件、地址和用戶名保存在用戶對象中,最后想要一個 id 映射到同一 id 下的用戶列表的列表。所以上面例子的 ResultObject 應該是這樣的:id=12List<User> = {["myname","address","email"],["myname1","address1","email1"]}任何想法表示贊賞。TIA。
查看完整描述

1 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

您可以使用Collectors.mappingalong with groupingByof samples(Sample而不是) 來獲取它們關聯的Object中間狀態,并將每個此類條目映射為:List<User>idResultObject


List<ResultObject> resultObjects = samples.stream()

        .collect(Collectors.groupingBy(Sample::getId,

                Collectors.mapping(a -> new User(a.getUserName(), a.getAddress(), a.getEmail()),

                        Collectors.toList())))

        .entrySet().stream()

        .map(e -> new ResultObject(e.getKey(), e.getValue()))

        .collect(Collectors.toList());


查看完整回答
反對 回復 2023-05-24
  • 1 回答
  • 0 關注
  • 579 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號