如何获取列表中LinkedHashMap中项目的索引?

时间:2019-03-25 19:22:21

标签: java data-structures java-8 linkedhashmap

我有这张地图

Map<String, List<OrderLine>> productsNeeded = new LinkedHashMap<>();

我想在列表中搜索某个项目,然后获取找到该项目的列表的键。

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

 productsNeeded.entrySet().stream()
    .filter(e -> e.getValue()
    .contains(matchingElement))
    .map(Map.Entry::getKey)
    .findFirst();

提供了matchingElement是您要查找的类型OrderLine的对象。在这里,您会得到Optional。要获取价值,您可以致电getorElse提供默认值,例如:

 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>