为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 java 8 按“名称”对对象进行分组?

如何使用 java 8 按“名称”对对象进行分组?

慕标5832272 2023-09-27 17:21:46
我有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));


查看完整回答
反对 回复 2023-09-27
  • 1 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信