Java эквивалентен Python itertools.groupby ()? - PullRequest
6 голосов
/ 14 июля 2011

Вот пример использования itertools.groupby() в Python:

from itertools import groupby

Positions = [   ('AU', '1M', 1000),
                ('NZ', '1M', 1000),
                ('AU', '2M', 4000),
                ('AU', 'O/N', 4500),  
                ('US', '1M', 2500), 
           ]

FLD_COUNTRY = 0
FLD_CONSIDERATION = 2

Pos = sorted(Positions, key=lambda x: x[FLD_COUNTRY])
for country, pos in groupby(Pos, lambda x: x[FLD_COUNTRY]):
    print country, sum(p[FLD_CONSIDERATION] for p in pos)

# -> AU 9500
# -> NZ 1000
# -> US 2500

Существует ли какая-либо языковая конструкция или поддержка библиотеки в Java, которая ведет себя или может достичь того, что itertools.groupby() делает выше?

Ответы [ 2 ]

6 голосов
/ 14 июля 2011

Ближайшая вещь может быть в Apache Functor . Взгляните на Примеры функторов, преобразователей, предикатов и замыканий в Java , где вы найдете пример.

Кстати - не ожидайте увидеть что-то похожее на Python, где эти вещи реализованы в 2-3 строки кода. Java не была разработана как язык с хорошими функциональными возможностями. Он просто не содержит много синтаксического сахара, как это делают языки сценариев. Может быть, в Java 8 будет больше этих вещей, объединенных . Вот причина, по которой появился Scala, см. Этот вопрос , который я задал некоторое время назад, где я получил действительно хорошие ответы. Как вы можете видеть в моем вопросе, реализация рекурсивной функции гораздо лучше в Python, чем в Java. Java обладает множеством полезных функций, но определенно функциональное программирование не входит в их число.

0 голосов
/ 08 апреля 2013

У меня был точно такой же вопрос, и я нашел neoitertools: http://code.google.com/p/neoitertools/ в ответах на этот вопрос: Есть ли эквивалент Python itertools для Java?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...