我有以下問題。我熟悉使用 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());
添加回答
舉報
0/150
提交
取消