gpt4 book ai didi

java - 数组的 ArrayList 每次都会被覆盖

转载 作者:太空宇宙 更新时间:2023-11-04 13:53:52 29 4
gpt4 key购买 nike

我正在尝试在递归函数中使用 ArrayList。我试图找到大小为 r 的数组 arr 的组合。就像我有一个数组一样

["A","B","C","D"]

我要打印:

A B C
A B D
A C D
B C D

但是当我在递归函数中打印 ArrayList 时,它给出:

Call1 : ABC
Call2 : ABD
ABD

等等。即每次 ArrayList 的先前内容都会被新内容覆盖,并且新内容也会添加到末尾。另外,在调用递归函数的函数中,我的 ArrayList 未返回,它只包含 E 列表。

在调用递归函数的函数中,我有类似的内容

private static void combine(String[] arr, int r) {
String[] res = new String[r];
ArrayList<String[]> result = new ArrayList<String[]>();
doCombine(arr, res, 0, 0, r, result);
System.out.println("\nIn main" + result.size());
for (Object[] array : result) {
for (Object o : array)
System.out.print("item: " + o);
System.out.println();
}
}

// This recursive function finds combinations
private static void doCombine(String[] arr, String[] res, int currIndex,
int level, int r, ArrayList<String[]> result) {

if (level == r) {
printArray(res);
String[] inter = new String[r];
inter = res;
result.add(inter);
// Tryinh to see wht the array list has every time
for (Object[] array : result) {
for (Object o : array) {
System.out.print("item: " + o);
}
System.out.println();
}
inter = null;
return;
}
for (int i = currIndex; i < arr.length; i++) {
counter.add();
res[level] = arr[i];
doCombine(arr, res, i + 1, level + 1, r, result);
}
}

请告诉我我做错了什么。

最佳答案

修改代码

    String[] inter = new String[r];
inter = res;
result.add(inter);

        String[] inter = new String[r];
int k=0;
for(String s:res){
inter[k] = s;
k++;
}
result.add(inter);

代码按预期工作。

输出:

1

A B C

2

A B C

A B D

3

A B C

A B D

A C D

4

A B C

A B D

A C D

B C D

关于java - 数组的 ArrayList 每次都会被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30028564/

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