С учетом начального List<Foo>
, какой самый краткий способ определить, имеет ли элемент Foo
со свойством bar
(доступ к которому getBar()
) значение "Baz
"? Лучший ответ, который я могу придумать, - это линейный поиск:
List<Foo> listFoo;
for(Foo f:listFoo) {
if(f.getBar().equals("Baz")) {
// contains value
}
}
Я посмотрел в HashSet, но, похоже, нет способа использовать contains()
без предварительного создания экземпляра Foo
для передачи (в моем случае Foo
дорого создавать). Я также посмотрел на HashMap, но, похоже, нет способа заполнить его, не просматривая список и не добавляя каждый элемент Foo
по одному. Список небольшой, поэтому меня беспокоит не столько производительность, сколько ясность кода.
Большая часть моего опыта разработки связана с C # и Python, поэтому я привык к более кратким утверждениям, таким как:
// C#
List<Foo> listFoo;
bool contains = listFoo.Count(f => f.getBar=="Baz")>0;
или
# Python
# list_foo = [Foo(), ...]
contains = "Baz" in (f.bar for f in list_foo)
Есть ли у Java способ это осуществить?