gpt4 book ai didi

python形式itertools的乘积函数的Java替代

转载 作者:行者123 更新时间:2023-12-04 09:06:23 25 4
gpt4 key购买 nike

在我的一个 java 程序中,我需要准确地使用 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中促进这一点?我一直在互联网上寻找它,但在任何地方都找不到。
如果您知道在这种情况下可以做什么,请分享一些内容。

最佳答案

尝试这个:
我用过 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 result;
}

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]

关于python形式itertools的乘积函数的Java替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63433335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com