Java-альтернатива функции продукта в python form itertools

#java #python #itertools

#java #python #python-itertools

Вопрос:

В одной из моих Java-программ мне нужно использовать именно то, что предлагает функция product из itertools, переставляя массив, повторяющий k раз.( perm=itertools.product(arr,repeat=k) ).

например для arr = [4,5] и k = 3 вывод должен быть:

 (4, 4, 4)
(4, 4, 5)
(4, 5, 4)
(4, 5, 5)
(5, 4, 4)
(5, 4, 5)
(5, 5, 4)
(5, 5, 5)
  

Я хочу спросить, есть ли какая-либо утилита или что-то в java, что может облегчить это в java? Я искал ее через Интернет, но нигде не смог найти.

Пожалуйста, поделитесь чем-нибудь, если вы знаете, что можно было бы сделать в этом случае.

Комментарии:

1. это поможет github.com/samagra14/itertools_java

2. Спасибо за предоставление ресурса. Я предполагаю, что функции, которую я искал, там нет

3. какая функция?

4. Функции Product, ее там нет.

5. @VipulTyagi это здесь: github.com/samagra14/itertools_java/blob/master/src /…

Ответ №1:

Попробуйте это:

Я использовал код python itertools.product в качестве ссылки.

 public class Util {

    public static <T> List<Collection<T>> product(Collection<T> a, int r) {
        List<Collection<T>> result = Collections.nCopies(1, Collections.emptyList());
        for (Collection<T> pool : Collections.nCopies(r, new LinkedHashSet<>(a))) {
            List<Collection<T>> temp = new ArrayList<>();
            for (Collection<T> x : result) {
                for (T y : pool) {
                    Collection<T> z = new ArrayList<>(x);
                    z.add(y);
                    temp.add(z);
                }
            }
            result = temp;
        }
        return resu<
    }

    public static void main(String[] args) {
        product(List.of(4, 5), 3).forEach(System.out::println);
    }
}
  

Вывод:

 [4, 4, 4]
[4, 4, 5]
[4, 5, 4]
[4, 5, 5]
[5, 4, 4]
[5, 4, 5]
[5, 5, 4]
[5, 5, 5]