我在Java中,下面的列表檢查列表<Object>包含屬性
List<MyObject> =[id ="id", name= "name", time =DateObj, id = "id2", name = "name2".. ]
我要檢查,如果該列表包含「NAME2」沒有在列表中有循環。有沒有一個API可以在Java中實現這一點?
我在Java中,下面的列表檢查列表<Object>包含屬性
List<MyObject> =[id ="id", name= "name", time =DateObj, id = "id2", name = "name2".. ]
我要檢查,如果該列表包含「NAME2」沒有在列表中有循環。有沒有一個API可以在Java中實現這一點?
沒有循環就沒有辦法做到這一點。但是,當然,循環可以通過庫方法完成,而不是由您完成。
做到這一點的最簡單方法是使用Java 8流:
boolean name2Exists = list.stream().anyMatch(item -> "name2".equals(item.getName()));
該死的,溪流真是太神奇了。 – wheeler
您可以在此情況下,使用HashMap<String,MyObject>
。
如果你想檢查基於名稱。然後使用名稱作爲HashMap中的鍵。
HashMap<String, MyObject> map = new HashMap<String, MyObject>();
map.put(obj.getName(), obj);
檢查地圖是否包含特定值。
if (map.containsKey("name2")) {
// do something
}
如果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實現的循環。其中一些可能會做簡單的迭代。 :)
也許是個好主意,如果您創建一個HashMap的關鍵對象的名稱和值MyObject。 – KostasC
使用地圖。哪裏關鍵將是你知道的領域和價值 – SacJn
這甚至不是Java代碼。我猜'MyObject'包含字段'id','name'和'time'?如果是這樣,要麼使用單獨的映射,要麼迭代列表元素並檢查每個元素。 – Thomas