使用 lambda 在 LinkedList 中查找元素

Finding element in LinkedList with lambda

我有一个简单的对象,可以用字符串来识别。这些标识符是唯一的。

public class SomeObject 
{

    private String identifier;

    public String getIdentifier() {
        return this.identifier;
    }
}

我现在有另一个 class,它包含这些简单对象的列表,并且有一个方法来 return 与提供的标识符匹配的对象(如果它存在于列表中)。

public class SomeBiggerClass
{

    LinkedList<SomeObject> allObjects;

    public SomeObject getObject(String identifier)
    {
        if (this.allObjects.stream().anyMatch(object -> object.getIdentifier() == identifier)) {
            return this.allObjects.stream().filter(object -> object.getIdentifier() == identifier).findAny().get();
        }
        else {
            return null;
        }
    }
}

然而,即使字符串完全匹配,anyMatch() 部分也会 return 为 false,并且会为第二个 lambda 抛出异常。我可以在 c# 和 linq 中执行此操作,但是我有点迷失了这些 java lambda。任何关于如何做到这一点的想法都会受到赞赏。

您需要使用 .equals(...) 而不是 == 来比较字符串。