gpt4 book ai didi

java - 如何使用 Java Stream API 迭代具有自定义对象的 HashMap

转载 作者:行者123 更新时间:2023-12-02 09:16:13 25 4
gpt4 key购买 nike

我有一个 HashMap ,其键作为下面的对象

我希望能够迭代 hashmap ,并仅检索与符号中的 name 和第二个值匹配的键的值,即 lmn 、 hij

示例:如果输入是 pqrhij ,结果应返回 500。我希望能够使用 Java 流 API 来执行此操作

class Product {
String name;
String symbol;
}

示例值

    KEY.               VALUE
name symbol
abc 12|lmn|standard 1000
pqr 14|hij|local 500

最佳答案

快速而肮脏:

map.entrySet().stream()
.filter(e -> e.getKey().name.equals(nameMatch))
.filter(e -> e.getKey().symbol.contains("|" + keyMatch + "|"))
.map(e -> e.getValue()).findFirst().orElse(null);

最好只创建一个检查产品的谓词:

Predicate<Product> matcher = matcher(nameMatch, symbolMatch);
Integer result = map.entrySet().stream()
.filter(e -> matcher.test(e.getKey()))
.map(e -> e.getValue()).findFirst().orElse(null);

...

private static Predicate<Product> matcher(String name, String symbolPart) {
String symbolMatch = "|" + symbolPart + "|";
return product -> product.name.equals(name) &&
product.symbol.contains(symbolMatch);
}

关于java - 如何使用 Java Stream API 迭代具有自定义对象的 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58963217/

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