Есть несколько способов отфильтровать Collection в Java, в зависимости от твоей версии и доступных библиотек. Выбор зависит от требований проекта и версии Java.
Утилита CollectionUtils из Apache Commons Collections предоставляет простой механизм фильтрации:
filter()List<String> namesList = asList("Red", "Blue", "Green");
List<String> shortNamesList = new ArrayList<>(namesList);
CollectionUtils.filter(shortNamesList, new Predicate() {
public boolean evaluate(Object input) {
return ((String) input).length() < 5;
}
});
В этом примере в коллекции остаются только имена короче 5 символов.
Библиотека Google Guava предлагает альтернативный подход со схожей функциональностью и сопоставимыми характеристиками производительности.
Для Java 8 и выше используй Stream с Predicate для более функционального и читаемого подхода:
List<String> shortNames = namesList.stream()
.filter(name -> name.length() < 5)
.collect(Collectors.toList());
Этот подход предпочтителен, потому что:
Выбирай в зависимости от ограничений: используй Java 8 Streams, если они доступны, иначе рассмотри Apache Commons Collections или Google Guava для поддержки старых версий Java.
Метод filter() в Apache Commons Collections модифицирует исходную коллекцию на месте, в то время как Java 8 Streams возвращает новую отфильтрованную коллекцию без изменения источника.
Новый — ещё не проверен сообществом
Вы