2015-01-10 125 views
0

我确实有一个简单的Object,它可以通过String来标识。这些标识符是唯一的。使用lambda找到LinkedList中的元素

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()部分假,并会抛出异常的第二拉姆达。我可以在c#和linq中做到这一点,但是我有点迷失在这些java lambda中。任何关于如何做到这一点的想法都是可以理解的。

+1

用户匹配= allObjects.stream()滤波器((对象) - > object.getIdentifier()等于(标识符)。)findAny()得到();。 试试这个 –

回答

1

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

+0

Jip,就是这样。我想我还是有点宿醉。不管怎么说,还是要谢谢你! – davidf