kar*_*raj 3 collections lambda java-8 java-stream collectors
我喜欢将下面的代码转换为java流,
HashMap<String, List<Data>> heMap = new HashMap<String, List<Data>>();
for (Data heData : obj) {
String id = heData.getData().getId() + heData.getPlanData().getCode()
+ heData.getPlanData().getId();
if (!heMap.containsKey(id)) {
CitizenHElist = new ArrayList<Data>();
CitizenHElist.add(heData);
heMap.put(id, CitizenHElist);
} else {
heMap.get(id).add(heData);
}
}
Run Code Online (Sandbox Code Playgroud)
我使用流尝试了下面的代码,但我没有成功.
heMap=obj.stream().collect(Collectors.toMap(t->getKey(t), obj.stream().collect(Collectors.toList())));
private String getKey(Data heData){
String id = heData.getData().getId() + heData.getPlanData().getCode()
+ heData.getPlanData().getId();
return id;
}
Run Code Online (Sandbox Code Playgroud)
Mis*_*sha 11
这是groupingBy收藏家的工作:
import static java.util.stream.Collectors.groupingBy;
Map<String, List<Data>> heMap = obj.stream().collect(groupingBy(d -> getKey(d)));
Run Code Online (Sandbox Code Playgroud)
请注意,这会使用一些非特定的实现Map和List.目前,它恰好是HashMap和ArrayList,但未来可能会发生变化.
| 归档时间: |
|
| 查看次数: |
2530 次 |
| 最近记录: |