gpt4 book ai didi

java - 根据 Java 中的值获取第一个 LinkedHashMap 键

转载 作者:行者123 更新时间:2023-12-05 05:40:40 26 4
gpt4 key购买 nike

我使用以下 LinkedHashMap并获取数字的出现次数 <number, occurences> .

Map<Integer, Integer> map = new LinkedHashMap<>();

存储在 map 中的值如下:

key | value
4 | 2
10 | 2
5 | 1
3 | 1

我想获取值为 1 的第一个键(在示例中为 5)。如果没有值为 1 的键,则返回 -1。我使用以下方法,但我认为这不是正确的方法,可能有更好或更短的方法来执行此操作:

int key = map.containsValue(1) ?
map.entrySet().stream()
.filter(entry -> entry.getValue() == 1)
.map(Map.Entry::getKey).findFirst().get() : -1;

那么,有没有更好的方法来实现这一点?

最佳答案

与其先检查 containsValue,不如使用 orElsefindFirst 返回的可选值上,这是通过 map 的少一次迭代。

int key = map.entrySet().stream()
.filter(entry -> entry.getValue() == 1)
.map(Map.Entry::getKey).findFirst().orElse(-1);

findFirst 将返回一个空的可选项,如果在过滤器之后没有留下任何东西。只有本地图中没有值 1 开始时才会发生这种情况。 orElse 返回它的参数,如果可选为空,否则返回包装后的值。

关于java - 根据 Java 中的值获取第一个 LinkedHashMap 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72359967/

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