我有一个可以通过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有点失落。关于如何做到这一点的任何想法都会被贬低。
答案 0 :(得分:1)
您需要使用 .equals(...)而不是 == 来比较字符串。