我需要从哈希图中选择一个确切的元素。
我写了一个应该返回一个元素的方法。 从行:
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)不同
答案 0 :(得分:1)
您可以返回null
作为默认值(如果Optional
为空):
return mapOfElements.entrySet()
.stream()
.filter(e -> Objects.equals(e.getValue(), element))
.map(Map.Entry::getKey)
.findAny()
.orElse(null);