gpt4 book ai didi

java - 如何在 HashMap 中找到关于该元素的给定条件为真的任何元素

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:33:49 26 4
gpt4 key购买 nike

  • 给定一个对象,MyObj出于我们的目的,它包含 String message在其他领域。
  • 给定一个 HashMap,Map <MultiKey<String>,MyObj> map .

我想遍历 HashMap 查找 MyObj 消息为 searchValue 的任何元素.我本质上是在尝试使用 stream().anyMatch()在 map 上,我只想知道是否 searchValue甚至在任何地方都存在一次 - 即短路是更可取的。

foreach 循环:

map.forEach((k,v) -> {
if (v.message.equalsIgnoreCase(searchValue)) {
return true;
}
}

问题在于它不会提前终止,break 也不会。或 return可以在此 lambda 中使用以提前终止循环。

我看到流 anyMatch() 函数:

 map.entrySet().stream().anymatch(....

但我想不出正确的语法 - 如果它在这种情况下完全有效(如果我不比较 map 的元素,而是比较每个元素的字段,它仍然可以使用)。

最佳答案

以前发布者的工作答案(有没有办法判断哪个更有效率?)

 //Note: anyMatch can be switched with noneMatch if need be

@JimGarrison:(似乎是最短/可读的):

if (map.values().stream().anyMatch(v -> v.message.equalsIgnoreCase(searchValue))
{...}

@路易斯沃瑟曼:

if (map.values().stream().map(v -> v.message).anyMatch(searchValue::equalsIgnoreCase)) 
{...}

@P3trur0:

if (null != map.values().stream().filter(v -> v.message.equalsIgnoreCase(searchValue)).findAny().orElse(null))
{...}

关于java - 如何在 HashMap 中找到关于该元素的给定条件为真的任何元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47658552/

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