gpt4 book ai didi

Java8 将映射列表转换为字符串列表

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

我正在使用Java8来实现以下内容,

 Map<String, String> m0 = new HashMap<>();
m0.put("x", "123");
m0.put("y", "456");
m0.put("z", "789");

Map<String, String> m1 = new HashMap<>();
m1.put("x", "000");
m1.put("y", "111");
m1.put("z", "222");

List<Map<String, String>> l = new ArrayList<>(Arrays.asList(m0, m1));

List<String> desiredKeys = Lists.newArrayList("x");

List<Map<String, String>> transformed = l.stream().map(map -> map.entrySet().stream()
.filter(e -> desiredKeys.stream().anyMatch(k -> k.equals(e.getKey())))
.collect(Collectors.toMap(e -> e.getKey(), p -> p.getValue())))
.filter(m -> !m.isEmpty())
.collect(Collectors.toList());
System.err.println(l);
System.err.println(transformed);
List<String> values = new ArrayList<>();
for (Map<String,String> map : transformed) {
values.add(map.values().toString());
System.out.println("Values inside map::"+map.values());
}
System.out.println("values::"+values); //values::[[123], [000]]

在这里,我只想从列表中获取 x 值。我已经实现了,但它的格式不正确。

预期输出:值::[123, 000]

实际输出:值::[[123], [000]]

我知道如何修复实际输出。但有没有什么简单的方法可以解决这个问题呢?任何帮助将不胜感激。

最佳答案

您无需遍历整个映射即可通过键查找条目。这就是 Map.get 的用途。要展平值列表的列表,请使用 flatMap:

import static java.util.stream.Collectors.toList;
.....

List<String> values = l.stream()
.flatMap(x -> desiredKeys.stream()
.filter(x::containsKey)
.map(x::get)
).collect(toList());

顺便说一句,请避免使用 l(小写 L)作为变量名称。它看起来太像数字 1

关于Java8 将映射列表转换为字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51522665/

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