java如何根据id对某些对象进行分组?
我有一些id为的对象。我希望根据id对对象进行分组。我的意思是,具有相同id的对象应该在一个组中。有什么想法吗
例如:
id Name
1 Allah
1 Mohammad
2 Ali
2 Fatemeh
2 Hassan
3 hossein
3 Mahdi
3 Reza
你可以在下面搜索框中键入要查询的问题!
我有一些id为的对象。我希望根据id对对象进行分组。我的意思是,具有相同id的对象应该在一个组中。有什么想法吗
例如:
id Name
1 Allah
1 Mohammad
2 Ali
2 Fatemeh
2 Hassan
3 hossein
3 Mahdi
3 Reza
# 1 楼答案
如果你不想使用第三方图书馆,你可以使用谷歌的Guava图书馆。存在一个
MultiMap
将一个键映射到一个值列表see here。它的工作原理与Map<Integer, List<Person>>
稍有不同。它有一些内置功能,比如values()
,可以将所有列表中的所有值作为一个平面集合返回。哪种变体更合适取决于你想用地图做什么# 2 楼答案
最简单的方法是使用番石榴多重贴图:
这将产生一个多重映射,其中ID为单键,值为对象
在Java8中,可以使用lambda表达式编写更简单的代码:
如果你不能使用番石榴,那么你需要自己实施这个行为,如卢卡斯·埃德的回答所示
至于Guava,这是一个由Google开发的非常流行的库,其中包含大量常用的实用程序类、方法和高级集合类(如双向映射、多集和多映射)
有关更多信息,请查看Guava Documentation
# 3 楼答案
假设你有这种类型:
然后你可以写以下内容:
或者,也许更好:
Java 8之前的版本: