我有DTO一些屬性,例如id、name、desc等。它的所有屬性都有 getter 和 setter。我從服務中得到一個Page<MyDto>,我需要根據屬性對 DTO 進行分組name。首先,我使用轉換Page<MyDto>為。List<MyDto>page.getContent我需要通過使用對其進行分組來將其轉換List為Map<String, Object> (不是Map<String,String>)。namesJava8我找到了一些例子,但它們沒有解決我的問題。如何將MyDto列表分組到地圖中?其中鍵是名稱 ( String),值是Array<MyDto>每個名稱的一個。例如:If `List<MyDto>` is : [{"id":1, "name":"albert", "desc":"science"},{"id":2, "name":"george", "desc":"econ"},{"id":3, "name":"christ", "desc":"math"},{"id":4, "name":"george", "desc":"literature"} // george repeats twice]輸出Map應該是:{"george":[{"id":2, "name":"george", "desc":"econ"},{"id":4, "name":"george", "desc":"literature"} ],"christ":[{"id":3, "name":"christ", "desc":"math"}],"albert":[{"id":1, "name":"albert", "desc":"science"}]}
1 回答

九州編程
TA貢獻1785條經驗 獲得超4個贊
只需使用Collectors::groupingBy
并將方法引用傳遞給MyDto::getName
將用作地圖鍵的方法:
List<MyDto>?dtos?=?... Map<String,?List<MyDto>>?map?=?dtos.stream() ????????????.collect(Collectors.groupingBy(MyDto::getName));
添加回答
舉報
0/150
提交
取消