Использование метода преобразования Guava Collections2 для работы в качестве Apache CollectionUtil.forAllDo - PullRequest
4 голосов
/ 31 августа 2011

Я читал некоторые посты, сравнивающие Guava и Apache Commons, и большинство авторов предпочитают использовать Guava.

Я также предпочитаю использовать Guava, хотя часто сталкиваюсь с необходимостью сочетать способности Guava и Apache Commons..

Например, я хочу выполнить операцию со всеми элементами коллекции.
Единственный способ сделать это с помощью Guava - это вызвать метод transform.
Но он используетFunction, которая получает значение и возвращает другое, в то время как мне не нужно возвращать другое.
Мне нужно, например, только поместить новую запись в Map, не изменяя коллекцию.С Apache Commons я бы использовал CollectionUtils.forAllDo.

Как получить тот же эффект, что и CollectionUtils.forAlDo, не возвращая какое-либо значение?

1 Ответ

9 голосов
/ 31 августа 2011

Я бы предложил вам использовать простую петлю foreach для мутаций. Гуава не любит побочные эффекты, и вы могли бы только путать читателей с неидиоматическим кодом.

Чтобы справиться с вашим делом, в Guava должен быть интерфейс Effect<T> с методом apply(T): void вместе с помощником Collections2#foreach(Effect<T>).

...