[Java] Хочу мапить и фильтровать коллекции в функциональном стиле

Gaishnik

Хочу писать такой код
  
List<String> l = new ArrayList<String>
//do something with this list
//..
//..
List l2 = CollectionUtils.filter(l, new Filter<String>{
public boolean filter(String arg0) {
return arg0.startsWith("foobar");
}
});

Apache Commons Collections выглядит довольно хорошо, но там все реализовано без дженериков, поэтому чтобы замапить список приходится писать 20 строк быдлокода. Какая библиотека самая стандартная для такой цели?

Hastya

Groovy
хотя есть и plain java.
Вообще от этих функциональных наворотов устаешь где-то через месяц. Веселье заканчивается, и оказывается, что легче в итоге не стало.

katrin2201

Посмотри в сторону google-collections

SPARTAK3959

C JavaOne:
Lambdaj is a library that makes easier to manipulate collections in a pseudo-functional and statically typed way. In our experience to iterate over collection, especially in nested loops, is often error prone and makes the code less readable. The purpose of this library is to alleviate these problems employing some functional programming techniques but without losing the static typing of java. We impose this last constraint to make refactoring easier and safer and allow the compiler to do its job. In a word, lambdaj partially eliminates the burden to write (often nested and poorly readable) loops while iterating over collections by allowing to filter, convert, group, aggregate and sort their items without to write a single explicit loop.

Gaishnik

Пользуюсь гугловскими коллекциями, очень доволен. Ловлю себя на том, что стал часто пользоваться функциональными фичами. Например там есть класс Pair<T1,T2> - обычный immutable tuple длины 2. Если я вижу, что по логике функция должна возвращать пару величин, то использую Pair<T1,T2> как возвращаемое значение. Вопрос, это считается хорошей практикой или нет? Кроме того, считается ли в реальном проекте, который будут поддерживать много человек, допустимым писать такой код?

pitrik2

хз
у себя в коде на стадии девелопменат бывало создавал класс Pair
но потом в окончательный вариант оно никогда не входило, убивалось при рефакторинге

bansek

ну это по-любому лучше, чем возвращать Object[] или не дай Бог нетипизированный Collection, чем грешит один товарищ в моем проекте ...
Оставить комментарий
Имя или ник:
Комментарий: