当前位置: 首页 > 知识库问答 >
问题:

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

段干麒
2023-03-14

我有一个DTO,带有几个属性,如idnamedesc等。

它的所有属性都有getter和setter。

我得到一个页面

首先,我转换页面

我需要将这个List转换成Map

我找到了一些例子,但它们并没有解决我的问题。

如何将MyDto列表分组到地图中?

其中键是名称(String),值是Array

例如:

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个答案

禹正阳
2023-03-14

只需使用Collectors::groupingBy并将方法引用传递给MyDto::getName方法,该方法将用作地图的键:

List<MyDto> dtos = ...
Map<String, List<MyDto>> map = dtos.stream()
            .collect(Collectors.groupingBy(MyDto::getName));
 类似资料:
  • 问题内容: 我已经寻找了一段时间,想要一种对Javascript对象进行排序的方法,如下所示: 并按名称的字母顺序排序以获得: 我找不到任何可以做到这一点的代码。谁能给我些帮助吗? 问题答案: 根据定义,键在对象中的顺序是未定义的 ,因此您可能无法以适应未来发展的方式进行操作。相反,您应该考虑在实际向用户显示对象时对这些键进行排序。无论它在内部使用什么排序顺序都没有关系。 按照惯例,大多数浏览器将

  • 有人知道一种方法(如果可能的话也可以使用lodash)通过对象键对对象数组进行分组,然后根据分组创建新的对象数组吗?例如,我有一个汽车对象数组: 我想制作一个由分组的新汽车对象数组:

  • 我有一个像 我有一个用户对象列表,比如:示例数据 我的问题是,如何将此列表分组以了解品牌id出现在哪些对象中,例如品牌id=10出现在所有三个对象中,品牌id=30仅出现在一个对象中 带有 key=brand id 和 value = count 的地图的结果将解决我的问题,如下所示:{10:3},{20:1},{30,1},{50,1},{80,1 }

  • 问题内容: 给出: 给出: 是否有准备使用的库/代码来完成它? 问题答案: 您将无法使用JSON.stringify序列化事件对象,因为事件对象包含对DOM节点的引用,并且DOM在各处都有循环引用(例如,子/父关系)。JSON默认情况下无法处理这些,因此您有点不走运。

  • 我最近开始编程,所以这可能会变得很容易。我在排序我的对象时遇到了困难。我有一个带有姓名、出生日期和电话号码的对象。就像Object[0][0]="John"Object[0][1]="10/10/2010"Object[0][0]="900000000"与其他几个人一样。所以我的困难是按姓名排序并保留出生日期和电话号码以及姓名。谢谢。