我确实有一个可以通过字符串标识的简单对象。这些标识符是唯一的。
public class SomeObject
{
private String identifier;
public String getIdentifier() {
return this.identifier;
}
}
我现在有另一个类,它保存这些简单对象的列表,并且有一个方法返回与所提供的标识符匹配的对象(如果该标识符存在于列表中)。
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() 部分返回 false,并为第二个 lambda 抛出异常。我可以在 C# 和 linq 中做到这一点,但是我对这些 java lambda 有点迷失。任何关于如何做到这一点的想法将不胜感激。
最佳答案
您需要使用 .equals(...) 而不是 == 来比较字符串。
关于java - 使用 lambda 在 LinkedList 中查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27876260/