如何使用Java8从HashMap中选择确切的元素

时间:2019-05-28 10:06:05

标签: java java-8 hashmap

我需要从哈希图中选择一个确切的元素。

我写了一个应该返回一个元素的方法。 从行:

this.referenceEntityCache.getReferenceEntities();

我将收到一个hashMap,看起来像这样地图

         {[Element: <Ry/>] = EntityTree@1,
        // [Element: <Nd/>] = EntityTree@2,
        // [Element: <Ry/>] = EntityTree@3,
        // [Element: <Ah/>] = EntityTree@4,
        // [Element: <Ah/>] = EntityTree@5 }

,从此地图中,我只需要获取“ Ah”元素。
hashMap的键为= Element,并与它链接的entityTree的值。

public Element pickUpTheElement() {
    Element ahElement = null;
    Map<Element, EntityTree> mapOfElements = this.referenceEntityCache.getReferenceEntities();
    return ahElement = mapOfElements.map(map -> map.entrySet()
                .stream()
                .filter(e -> Objects.equals(e.getValue(), element))
                .map(Map.Entry::getKey)
                .findAny());
                .orElse(null);

不知道如何使用Java8对其进行正确过滤并仅从中获取“ Ah”元素。 Ah有2个元素-但由于它们是对象-它们的哈希码不同,因为它们的值(EntityTree)不同

1 个答案:

答案 0 :(得分:1)

您可以返回null作为默认值(如果Optional为空):

return mapOfElements.entrySet()
                    .stream()
                    .filter(e -> Objects.equals(e.getValue(), element))
                    .map(Map.Entry::getKey)
                    .findAny()
                    .orElse(null);