2015-12-17 2 views
0

У нас есть список массивов, содержащий объекты TestVo. Объект TestVo имеет переменные «blockNo, buildingName и т. Д.» С геттерами и сеттерами. Мы устанавливаем значения и добавляем этот объект к списку. Теперь нам нужно удалить объект, содержащий нулевое значение из списка. Пример кода:Удалить объект содержит нулевое значение из списка

List <TestVo> listOfBranches = new ArrayList<TestVo>(); 
TestVo obj1 = new TestVo(); 
obj1.setBlockNo("1-23"); 
obj1.setBuildingName(null); 
TestVo obj2 = new TestVo(); 
obj2.setBlockNo(null); 
obj2.setBuildingName("test"); 
TestVo obj3 = new TestVo(); 
obj3.setBlockNo("4-56"); 
obj3.setBuildingName("test, Ind"); 
listOfBranches.add(obj1); 
listOfBranches.add(obj2); 
listOfBranches.add(obj3); 

Итак, наконец, как мы можем удалить объект содержит нулевое значение из списка.

+1

перебрать все из них, проверить все их члены, удалять, если происходит нуль. – Stultuske

+0

Благодарим вас за ответ. На данный момент мы это сделали. Я опубликовал здесь, чтобы узнать любые другие возможности для упрощения этой логики без итераций. – srisri

+0

Вам необходимо выполнить итерацию по элементам списка, неявно или явно. –

ответ

1

Использование Java 8 потоков API,

listOfBranches = listOfBranches 
      .stream() 
      .filter(candidate -> candidate.getBlockNo() != null) 
      .collect(Collectors.toList()); 

могли бы сделать эту работу за вас.

В противном случае используйте итератор:

Iterator it = myList.iterator(); 
    while(it.hasNext()) { 
     if (it.next().getBlockNo() == null) { 
      it.remove(); 
     } 
    } 
+0

Спасибо заем. Но мы пока не должны менять версию jdk. – srisri

+0

Как и getBlockNo, мы имеем max 78 переменных и проверка на 78 в порядке. Но такую ​​же логику нужно делать и для многих других мест. Я чувствую код messy – srisri

+0

Затем просто добавьте метод внутри вашего объекта, например. 'isValid' и всегда использовать этот метод для фильтрации объектов. – Ioan