gpt4 book ai didi

Java 8 : change type of entries return Map

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:53:01 27 4
gpt4 key购买 nike

我得到以下问题:我有一个 Map<?,?>然后我从 PList 文件中解析它,简化如下:

Map<String, String> m  = (Map<String, String>) getMap();

getMap()方法只是读取文件 (.plist)。我想将所有值解析为 String,但不幸的是 Map 包含整数,导致稍后在该过程中出错。所以我想写一个使用过滤器将所有内容转换为字符串的方法:

我的做法是:

m.entrySet().stream()
.map(e -> e.getValue())
.filter(e -> e instanceof Integer)
.map(e -> String.valueOf(e))
.collect(Collectors.toMap(e -> e.keys(), e -> e.getValue()));

问题是,最后的收集不起作用,我该如何解决?结果应该又是一张 map 。

非常感谢!

最佳答案

你误解了 Collectors.toMap有效 - 它需要两个函数,一个给定条目产生一个新键,一个给定条目产生一个新值。然后,映射中的每个条目都应用了这两个函数,并且该单个元素的结果键/值用于在新映射中构造新条目。

此外,通过将每个条目仅映射到值,您将失去键和值之间的关联,这意味着您无法正确重建映射。

更正后的版本是:

Map<String, String> n;
n = m.entrySet()
.stream()
.filter(e -> e.getValue() instanceof Integer)
.collect(Collectors.toMap(e -> e.getKey(),
e -> String.valueOf(e.getValue())));

关于Java 8 : change type of entries return Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48210558/

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