使用 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(...) 而不是 == 来比较字符串。
我有一个简单的对象,可以用字符串来识别。这些标识符是唯一的。
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(...) 而不是 == 来比较字符串。