Когда вы получаете поток из списка, он не изменяет список. Если вы хотите получить размер потока после фильтрации, вы вызываете на нем count()
.
long sizeAfterFilter =
locales.stream().filter(l -> l.getLanguage().equals("en")).count();
Если вы хотите, чтобы получить новый список, просто позвоните .collect(toList())
на результирующем потоке. Если вас не волнует изменение списка на месте, вы можете просто использовать removeIf
на List
.
locales.removeIf(l -> !l.getLanguage().equals("en"));
Обратите внимание, что Arrays.asList
возвращает список фиксированного размера, так что будет сгенерировано исключение, но вы можете обернуть его в ArrayList
, или просто собирают содержание фильтрованного потока в List
(соотв. ArrayList
) с использованием Collectors.toList()
(соответственно Collectors.toCollection(ArrayList::new)
).
http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java –