Проблема в том, что использование метода вроде find_if должно сделать код более простым для написания и более легким для чтения. Тем не менее, IMHO, Java не поддается функциональной нотации, и в большинстве случаев проще и проще написать естественный цикл. то есть код короче и не требует знания библиотек, которые большинство людей не используют. Если эта функциональность была встроена и Java поддерживает Closures (как
Похоже, Java 7 будет), тогда использование предикатов и функциональных методов имело бы больше смысла.
Одним из показателей сложности является подсчет количества символов (считая открытые / закрывающие скобки как один). Используя этот показатель сложности, большинство решений на основе предикатов имеют больше символов и, возможно, являются более сложными и трудными для чтения / обслуживания разработчиками.
В примере, приведенном @Roman, есть 15 символов. В примере цикла есть 10 символов.
List<Car> premiumCars = new ArrayList();
for(Car car: cars)
if(car.price > 50000)
premiumCars.add(car);
В примере @Mario Fuscom 9 символов, в следующем 9 символов. Однако не требуется никаких нестандартных функций, и любой, кто знает Java, может читать / поддерживать его.
List peopleOver30 = new ArrayList();
for(Person person: people)
if(person.age > 30)
peopleOver30.add(person);
Взяв последний пример из @Rahul G - я ненавижу единорогов, там 13 символов. В примере цикла есть 8 символов.
Integer firstOdd = null;
for(int i: myList)
if(i % 2 == 1) {
firstOdd = i;
break;
}
Функциональное программирование может иметь больше смысла для вас, потому что это ваш опыт разработки, но это не значит, что это естественный или самый простой способ выразить это в Java. Java 7 может изменить это ....