Как выбрать точный элемент из HashMap с помощью Java8 - PullRequest
0 голосов
/ 28 мая 2019

Мне нужно выбрать точный элемент из хэш-карты.

Я написал метод, который должен возвращать элемент. Из строки:

this.referenceEntityCache.getReferenceEntities();

Я получу hashMap, похожее на это Карта :

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

и из этой карты мне нужно получить только элемент "Ах".
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 и получать из него только элемент «Ах». Есть 2 элемента Ah - но поскольку они являются объектами - они имеют разные хеш-коды, поскольку их значения (EntityTree) различны

1 Ответ

1 голос
/ 28 мая 2019

Вы можете вернуть null в качестве значения по умолчанию (если Optional пусто):

return mapOfElements.entrySet()
                    .stream()
                    .filter(e -> Objects.equals(e.getValue(), element))
                    .map(Map.Entry::getKey)
                    .findAny()
                    .orElse(null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...