gpt4 book ai didi

java - 如何使用 Java stream api 过滤 map ?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:43:16 27 4
gpt4 key购买 nike

Map<Integer, String> map = new HashMap<>();
map.put(1, "f");
map.put(2, "I");
map.put(3, "a");
map.put(4, "c");....etc

现在我有一个列表:

List<Integer> picks = {1,3}

我想取回一个字符串列表,即在“选择”列表中找到的与键值匹配的映射值。所以,我希望取回 {"f", "a"} 作为结果。有没有办法使用 java stream api 以优雅的方式做到这一点?

当只有一个值时,我是这样做的:

map.entrySet().stream()
.filter(entry -> "a".equals(entry.getValue()))
.map(entry -> entry.getValue())
.collect(Collectors.toList())

但是当有要过滤的键/选择列表时会变得困难。

最佳答案

您可以在 Stream#filter 中使用 List.contains() 以仅接受列表中存在的那些值:

List<String> result = map.entrySet()
.stream()
.filter(ent -> picks.contains(ent.getKey()))
.map(Map.Entry::getValue)
.collect(Collectors.toList());

关于java - 如何使用 Java stream api 过滤 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57597518/

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