2015-10-21 54 views
-2

我在Java中,下面的列表檢查列表<Object>包含屬性

List<MyObject> =[id ="id", name= "name", time =DateObj, id = "id2", name = "name2".. ] 

我要檢查,如果該列表包含「NAME2」沒有在列表中有循環。有沒有一個API可以在Java中實現這一點?

+0

也許是個好主意,如果您創建一個HashMap的關鍵對象的名稱和值MyObject。 – KostasC

+0

使用地圖。哪裏關鍵將是你知道的領域和價值 – SacJn

+1

這甚至不是Java代碼。我猜'MyObject'包含字段'id','name'和'time'?如果是這樣,要麼使用單獨的映射,要麼迭代列表元素並檢查每個元素。 – Thomas

回答

11

沒有循環就沒有辦法做到這一點。但是,當然,循環可以通過庫方法完成,而不是由您完成。

做到這一點的最簡單方法是使用Java 8流:

boolean name2Exists = list.stream().anyMatch(item -> "name2".equals(item.getName())); 
+0

該死的,溪流真是太神奇了。 – wheeler

0

您可以在此情況下,使用HashMap<String,MyObject>

如果你想檢查基於名稱。然後使用名稱作爲HashMap中的鍵。

HashMap<String, MyObject> map = new HashMap<String, MyObject>(); 
map.put(obj.getName(), obj); 

檢查地圖是否包含特定值。

if (map.containsKey("name2")) { 
    // do something 
} 
0

如果MyObject是您自己的類,您可以適當地重寫方法equals(和hashcode)。因此,您可以使用標準方法列表。包含

List<MyObject> myObjectList = ...; 
... 
MyObject objectToBeFound = new MyObject("name2", ...); 
if (myObjectList.contains(objectToBeFound)) 
{ 
    //object is in the list 
} 
else 
{ 
    //it is not in the list 
} 

PS。但實際上反正會有一些依賴List實現的循環。其中一些可能會做簡單的迭代。 :)