我有这张地图
Map<String, List<OrderLine>> productsNeeded = new LinkedHashMap<>();
我想在列表中搜索某个项目,然后获取找到该项目的列表的键。
答案 0 :(得分:1)
您可以尝试以下方法:
productsNeeded.entrySet().stream()
.filter(e -> e.getValue()
.contains(matchingElement))
.map(Map.Entry::getKey)
.findFirst();
提供了matchingElement
是您要查找的类型OrderLine
的对象。在这里,您会得到Optional
。要获取价值,您可以致电get
或orElse
提供默认值,例如:
productsNeeded.entrySet().stream()
.filter(e -> e.getValue()
.contains(matchingElement))
.map(Map.Entry::getKey)
.findFirst().orElse(null);
答案 1 :(得分:1)
您可以在Java 8+中使用sapply
进行此操作。我通过将内键设置为x
来简化了此操作:
Streams
您可以在其中将其他内容设置为默认值List<String>
。