Узнайте, как найти первый элемент коллекции, который соответствует условию в Java, с помощью Коллекции Eclipse.
Обнаружение / обнаружение с помощью
Используйте detect
, чтобы найти первый элемент коллекции, соответствующий заданному Predicate
. Используйте detectWith
, чтобы найти первый элемент коллекции, который соответствует заданному Predicate2
с дополнительным параметром. Метод detectWith
хорошо работает со ссылками на методы. Если соответствующий элемент не найден, возвращается null
.
MutableList<String> rainbow = Lists.mutable.with( "Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"); String red = rainbow.detect(each -> each.startsWith("R")); Assert.assertEquals("Red", red); String red2 = rainbow.detectWith(String::startsWith, "R"); Assert.assertEquals("Red", red2); Assert.assertNull(rainbow.detect(each -> each.startsWith("T"))); Assert.assertNull(rainbow.detectWith(String::startsWith, "T"));
DetectIfNone / DetectWithIfNone
Используйте detectIfNone
, чтобы найти первый элемент коллекции, который соответствует заданному Predicate
. Если совпадения нет, возвращает результат оценки заданного Function0
. Метод detectWithIfNone
похож на detectWith
, а также хорошо работает со ссылками на методы.
String violetIfNone = rainbow.detectIfNone( each -> each.startsWith("T"), () -> "Violet"); Assert.assertEquals("Violet", violetIfNone); String violetIfNone2 = rainbow.detectWithIfNone( String::startsWith, "T", () -> "Violet"); Assert.assertEquals("Violet", violetIfNone2);
DetectOptional / DetectWithOptional
Метод detectOptional
эквивалентен filter().findFirst()
на Java Stream
. Этот метод вернет Optional
, который можно запросить, чтобы определить, соответствует ли какой-либо элемент заданному Predicate
. Метод detectWithOptional
похож на detectWith
и одинаково хорошо работает со ссылками на методы.
Optional<String> violetOptional = rainbow.detectOptional(each -> each.startsWith("T")); Assert.assertEquals("Violet", violetOptional.orElse("Violet")); Optional<String> violetOptional2 = rainbow.detectWithOptional(String::startsWith, "T"); Assert.assertEquals("Violet", violetOptional2.orElse("Violet"));
API, рассмотренные в примерах
detect
/detectWith
- находит первый элемент коллекции, соответствующий заданномуPredicate
илиPredicate2
. Если совпадений нет, возвращаетсяnull
.detectIfNone
/detectWithIfNone
- находит первый элемент коллекции, соответствующий заданномуPredicate
илиPredicate2
. Если совпадений нет, возвращается результат оценки заданногоFunction0
.detectOptional
/detectWithOptional
- находит первый элемент коллекции, соответствующий заданномуPredicate
илиPredicate2
. Результатом вызова будетOptional
, который можно запросить, чтобы определить, было ли совпадение успешным.
Ознакомьтесь с этой презентацией, чтобы узнать больше о происхождении, дизайне и эволюции Eclipse Collections API.
Я руководитель проекта и ответственный за проект OSS Коллекции Eclipse в Eclipse Foundation. Eclipse Collections открыта для пожертвований. Если вам нравится библиотека, вы можете сообщить нам об этом, отметив ее на GitHub.