2015-01-10 48 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