我从JPA存储库查询中检索引用这些表的实体
| 识别码|名称名称名称|城市名称|
| - -|- -|- -|
| 一个|若翰|纽约|
| 2个|保禄|亚特兰大|
| 三个|标记|洛杉矶|
| 四个|苏姗|洛杉矶|
| 五个|约什|纽约|
| 六个|查尔斯|亚特兰大|
我想按我的“按城市划分的实体列表”分组,并获得以下响应:
{"New York":["John","Josh"],"Atlanta":["Paul", "Charles"],"Los Angeles":["Mark","Susan"]}
我试着跟随This link,但是我只能得到一个Map〈String,List< RegistryEntity >。我不想要这些,我想要Map〈String,List< String >〉,所以我用了这些方法。
public Map<String, List<String>> findAllUsers() {
List<RegistryEntity> items = registryRepository.findAll();
Map<String, List<String>> itemsGrouped = new HashMap<>();
for (RegistryEntity s: items) {
if (itemsGrouped.get(s.getCity()) != null) {
itemsGrouped.get(s.getCity()).add(s.getName());
}
else {
List<String> tempResults = new ArrayList<>();
tempResults.add(s.getCity());
itemsGrouped.put(s.getName(), tempResults);
}
}
return itemsGrouped;
}
代码可以工作,但我想知道是否有更有效和更优雅的东西来按我的实体分组。
1条答案
按热度按时间j9per5c41#
你可以使用流,然后你还需要collector.groupingBy和collector.mapping,我试着编写类似下面的代码。