使用lambda查找链接列表中的元素

时间:2015-01-10 12:31:14

标签: java lambda linked-list

我有一个可以通过String识别的简单Object。这些标识符是唯一的。

public class SomeObject 
{

    private String identifier;

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

我现在有另一个类,它包含这些简单对象的List,并且有一个方法可以返回与列表中存在的标识符匹配的对象。

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;
        }
    }
}

但是,即使Strings完全匹配,它也会为anyMatch()部分返回false,并为第二个lambda抛出异常。我可以在c#和linq中做到这一点,但是我对这些java lambdas有点失落。关于如何做到这一点的任何想法都会被贬低。

1 个答案:

答案 0 :(得分:1)

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