Есть ли эквивалент Python itertools для Java?
Я ищу библиотеку (желательно родовую), которая генерирует итеративные комбинации и перестановки данных, содержащихся в коллекциях. Декартово произведение тоже было бы хорошо.
Лучшим способом описания того, что я хочу, будет "itertools for Java".
Ответы
Ответ 1
itertools
делает гораздо больше, чем просто комбинации и перестановки, поэтому (хотя, конечно, было бы неплохо иметь все itertools
при кодировании Java;-) вы можете обойтись гораздо меньше.
Например, для перестановок см. здесь; для комбинаций здесь (оба класса принадлежат одному автору).
Ответ 2
Я фактически создаю порт itertools для java: он называется neoitertools
Любые отзывы оцениваются по-прежнему в бета-версии. Отсутствует функция "продукт" и некоторые интенсивные тесты.
Ответ 3
Декартово произведение доступно здесь:
http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Sets.html#cartesianProduct%28java.util.Set...%29
Ответ 4
Здесь вы найдете что-то, что может удовлетворить ваши комбинаторные потребности в библиотеке:
http://code.google.com/p/combinatoricslib/
Ответ 5
Я просто выбрасываю это, но не следует ли использовать реализацию Python itertools непосредственно из Java с помощью Jython? Является ли это апикалом на основе C?
[один Google позже]
itertools (документация по API Jython)
Фактически, проект neoitertools, указанный выше, выглядит очень многообещающим, он, кажется, находится в [очень] активной разработке (в соответствии с кодом Google ) и выглядит как полная реализация функциональности itertools, а также доступная через Maven.
Просто мой 2 пенс.
Ответ 6
Несколько лет спустя combinatorics, похоже, соответствует вашим потребностям. Взято из файла readme:
Simple permutations
Permutations with repetitions
Simple combinations
Combinations with repetitions
Subsets
Integer Partitions
List Partitions
Integer Compositions