Удалить элемент из списка объектов на основе значения внутреннего списка объектов в java - PullRequest
0 голосов
/ 18 февраля 2020

Как я могу удалить элемент из списка, если какое-либо значение атрибута внутреннего списка не удовлетворяет условию. Хитрость заключается в том, что сам атрибут является списком, а сравнение основано на каком-то атрибуте этого внутреннего списка. Пожалуйста, обратитесь к приведенному ниже образцу и помогите заполнить раздел комментариев в коде:

Объект:

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;
*/
}

Ответы [ 2 ]

5 голосов
/ 18 февраля 2020

Что вы можете сделать это, чтобы поток по оригинальному списку, и оставить только объекты, которые удовлетворяют условию. Это может выглядеть примерно так:

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)

0 голосов
/ 18 февраля 2020

Вы можете сделать foreach l oop и удалить ненужные элементы. В классе «product» вы можете вставить функцию «FindInnerAtribute» для поиска в списке атрибутов и вернуть true, если они есть.

List<product> productList = new ArrayList<product>();
for(product p : productList){
    if ( p.FindInnerAttribute(x) ){
        productList.remove(p);
    }
}

Как удалить из списка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...