Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java Stream API迭代自定义对象的HashMap_Java_Java Stream - Fatal编程技术网

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

如何使用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

我有一个hashmap,其中key作为下面的对象

我希望能够遍历hashmap,并仅检索与符号中的名称和第二个值匹配的键的值,即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);
最好只创建一个检查产品的谓词:

谓词匹配器=匹配器(名称匹配,符号匹配);
整数结果=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
的代码定义会很有帮助-它是
映射
?谢谢。但我还想搜索名称字段。如何收集?已编辑-见上文。如果它对您不起作用,您能解释一下结果是否错误,或者它是否引发了异常,谢谢