Map<String, List<ZeekrFriend>> zeekrFriendsMap = zeekrFriendList.stream().collect(Collectors.groupingBy(ZeekrFriend::getOpenId)); divideLogs.forEach(item->{ if(!item.getDivideTo().equals(ShareConstants.DIVIDE_TO_ALL)){ List<ZeekrFriend> flattenedList = Arrays.stream(item.getDivideTo().split("\\|")) .flatMap(key -> zeekrFriendsMap.getOrDefault(key, Collections.emptyList()).stream()) .collect(Collectors.toList()); item.setFriends(flattenedList); } });优化这段代码
时间: 2024-03-05 18:49:36 浏览: 28
可以使用流的方式代替forEach循环,利用lambda表达式来简化代码,示例代码如下:
```java
divideLogs.stream()
.filter(item -> !item.getDivideTo().equals(ShareConstants.DIVIDE_TO_ALL))
.forEach(item -> {
List<ZeekrFriend> flattenedList = Arrays.stream(item.getDivideTo().split("\\|"))
.flatMap(key -> zeekrFriendsMap.getOrDefault(key, Collections.emptyList()).stream())
.collect(Collectors.toList());
item.setFriends(flattenedList);
});
```
这样的代码更加简洁、易读,同时利用流的方式可以提高代码的性能和可维护性。
相关问题
将Map<String, List<DictResponseVO>> collect = dictTree.stream().collect(Collectors.groupingBy(DictResponseVO::getCode));的结果修改为Map<String, Map<String, List<DictResponseVO>>>
可以使用Collectors.groupingBy嵌套来完成这个转换,代码如下:
```
Map<String, Map<String, List<DictResponseVO>>> collect = dictTree.stream()
.collect(Collectors.groupingBy(DictResponseVO::getCode, Collectors.groupingBy(DictResponseVO::getType)));
```
这样就可以按照code和type两个属性进行分组,得到一个嵌套的Map。其中外层Map的key是code,value是内层Map;内层Map的key是type,value是对应的DictResponseVO列表。
Map<String, List<LookupValueEntity>> vehicleListMap = lookList.stream().collect(Collectors.groupingBy(LookupValueEntity::getLookupValueCode));
这段代码是使用 Java 8 中的 Stream API 对一个 `List<LookupValueEntity>` 进行分组操作,将相同 `lookupValueCode` 的 `LookupValueEntity` 对象分成一组,并将这些分组放入一个 `Map<String, List<LookupValueEntity>>` 中。
具体地,`lookList` 是一个 `List<LookupValueEntity>` 对象,`Collectors.groupingBy(LookupValueEntity::getLookupValueCode)` 是一个静态方法,它接收一个分类函数 `LookupValueEntity::getLookupValueCode`,将其作为分组依据,将 `lookList` 中的元素分组,并将分组结果放入一个 `Map<String, List<LookupValueEntity>>` 中。
这个 `Map` 中的 key 是 `lookupValueCode` 字段的值,value 是一个 `List<LookupValueEntity>` 对象,它包含了所有 `LookupValueEntity` 对象,这些对象的 `lookupValueCode` 值相同。
例如,如果 `lookList` 中有以下两个 `LookupValueEntity` 对象:
```
LookupValueEntity{"code": "A", "value": "foo"}
LookupValueEntity{"code": "B", "value": "bar"}
```
那么执行上述代码后,会得到一个 `Map` 对象,其中包含了两个 `List` 对象:
```
{
"A": [{"code": "A", "value": "foo"}],
"B": [{"code": "B", "value": "bar"}]
}
```
其中,key 为 "A" 的 `List` 包含了第一个 `LookupValueEntity` 对象,key 为 "B" 的 `List` 包含了第二个 `LookupValueEntity` 对象。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)