[英]Remove a element from List of objects based on inner object list value in java
如果某些內部列表屬性值不滿足條件,如何從列表中刪除元素。這里的技巧是該屬性本身是一個列表,比較基於該內部列表的某些屬性。 請參考以下示例並幫助填寫代碼中的注釋部分:
目的 :
Class product{
private String productId;
private String productName;
private List<Attribute> attributeList;
public static class Attribute{
private Long attributeId;
}
}
驅動程序類:
Class Driver{
List<product> productList = new ArrayList<product>();
/*
Remove the object from productList if attributeList doesn't contain attribute with attributeId = x;
*/
}
你可以做什么來流過原始列表,只留下滿足條件的對象。 它可能看起來像這樣:
List<Product> filtered = productList.stream()
.filter( p -> p.attributeList().stream().anyMatch( a -> a.attributeId.equals(x))
.collect(Collectors.toList())
在本次直播中,我們實際上是在檢查嵌套列表是否包含至少一個具有attributeId = x
對象p.attributeList().stream().anyMatch( a -> a.attributeId.equals(x)
您可以執行 foreach 循環並刪除不需要的元素。 在“product”類中,您可以插入“FindInnerAtribute”函數以在屬性列表中搜索,如果有則返回true。
List<product> productList = new ArrayList<product>();
for(product p : productList){
if ( p.FindInnerAttribute(x) ){
productList.remove(p);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.