java - 使用 lambda 在 LinkedList 中查找元素

标签 java lambda linked-list

我确实有一个可以通过字符串标识的简单对象。这些标识符是唯一的。

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/

相关文章:

java - 如何解决此未经检查的强制转换警告?

python - 如何计算 pandas groupby 中的所有正值和负值?

algorithm - 如何在排序的链表上应用二进制搜索 O(log n)?

java - 使用外部和本地库运行 jar 文件

java - 使用 Class<?> 作为键创建 ImmutableMap 的问题

java - 防止用户在 SuggestBox 中输入无效内容?

c++ - 为什么将函数包装到 lambda 中可能会使程序更快?

java - 为什么使用方法引用时操作监听器会给出不同的结果?

c - struct node *head 和 struct node ** head 有什么区别?

java - 如何重新排序链接列表?