如何使用Java Stream API迭代自定义对象的HashMap
我有一个hashmap,其中key作为下面的对象 我希望能够遍历hashmap,并仅检索与符号中的名称和第二个值匹配的键的值,即lmn、hij 示例:如果输入为pqr和hij,则结果应返回500。我希望能够使用Java流API实现这一点如何使用Java Stream API迭代自定义对象的HashMap,java,java-stream,Java,Java Stream,我有一个hashmap,其中key作为下面的对象 我希望能够遍历hashmap,并仅检索与符号中的名称和第二个值匹配的键的值,即lmn、hij 示例:如果输入为pqr和hij,则结果应返回500。我希望能够使用Java流API实现这一点 class Product { String name; String symbol; } 示例值 KEY. VALUE name symbol abc 12|lmn|standard 1000 pqr
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);
最好只创建一个检查产品的谓词:
谓词匹配器=匹配器(名称匹配,符号匹配);
整数结果=map.entrySet().stream()
.filter(e->matcher.test(e.getKey()))
.map(e->e.getValue()).findFirst().orElse(null);
...
专用静态谓词匹配器(字符串名称、字符串符号部分){
字符串symbolMatch=“|”+symbolPart+“|”;
退货产品->产品名称等于(名称)&&
product.symbol.contains(symbolMatch);
}
如果要在hashmap中查找特定的键,不需要迭代hashmap。你只要查一下那把钥匙就行了。这就是hashmaps的用途。你的hashmap在哪里?你有什么困难?它不是一个特定的键,它的名称和我必须匹配的部分符号。查看你的hashmap
的代码定义会很有帮助-它是映射
?谢谢。但我还想搜索名称字段。如何收集?已编辑-见上文。如果它对您不起作用,您能解释一下结果是否错误,或者它是否引发了异常,谢谢