Я хочу сделать это в Java 8Фильтрующие элементы из списка на основе другого списка
У меня есть список Boolean
и другой Object
список, размер этих двух списков всегда одинаковы. Я хочу удалить все элементы из списка object
, которые имеют false
по соответствующему индексу в списке boolean
.
Я попытаюсь объяснить на примере:
objectList = {obj1,obj2,obj3,obj4,obj5};
booleanList = {TRUE,FALSE,TRUE,TRUE,FALSE};
Так что с этим списком, я хочу изменить objectList
к
{obj1,obj3,obj4}// obj2 and obj5 are removed because corresponding indices are `FALSE` in `booleanList`.
Если я есть сделать это в Java 7
, я хотел бы сделать следующие:
List<Object> newlist = new ArrayList<>();
for(int i=0;i<booleanList.size();i++){
if(booleanList.get(i)){
newList.add(objectList.get(i));
}
}
return newList;
Есть ли способ сделать это в Java 8
с меньшим кодом?
Предполагая, что списки произвольного доступа, 'Список resultList = IntStream.range (0, booleanList.size()). Filter (booleanList :: get) .mapToObj (objectList :: get) .collect (toList()); ', вероятно, наиболее эффективен, который вы можете получить. –
@AlexisC. это сработало, спасибо :) – Karthik