gpt4 book ai didi

java - 如何将 Stream> 转换为映射 java 8

转载 作者:行者123 更新时间:2023-12-02 14:54:11 24 4
gpt4 key购买 nike

我在这里发布示例数据结构

我有一个列表 List<Result> resultsList;

class Result { 
String name;
Map<String,Integer> resultMap;
}

现在我想通过这个列表流式传输并获取 map 。

resultList.stream().filter(result->"xxx".equals(result.getName()))
.map(result->result.getResultMap);

它返回 Stream<Map<String,Integer>>但我只需要 Map<String,Integer> .

如何使用 java 8 流获取它?

更新:

正如geneqew提到的

这是我的数据结构的样子

List<Result> resultsList;

Map<String, Integer> map1 = new HashMap<>();
map1.put("m1", 1);
Map<String, Integer> map2 = new HashMap<>();
map2.put("m2", 2);
Map<String, Integer> map3 = new HashMap<>();
map3.put("m3", 3);

results = Arrays.asList(
new Result("r1", map1),
new Result("r2", map2),
new Result("r3", map3)
);

我想检索基于 name 的单个 map .

for (Result result: resultsList)
{
if ('xxx'.equals(result.getName())
{
return result.getResultMap();
}
}

最佳答案

由于要返回第一个通过过滤器的 Result 元素的结果映射,可以使用 findFirst() 获取它:

Optional<Map<String,Integer>> resultMap = 
resultList.stream()
.filter(result->"xxx".equals(result.getName()))
.map(Result::getResultMap)
.findFirst();

您可以通过这种方式从 Optional 中提取 Map:

Map<String,Integer> resultMap = 
resultList.stream()
.filter(result->"xxx".equals(result.getName()))
.map(Result::getResultMap)
.findFirst()
.orElse(null);

关于java - 如何将 Stream<Map<Integer, String>> 转换为映射 java 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53757013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com