gpt4 book ai didi

java - 无法将元素添加到数组列表

转载 作者:行者123 更新时间:2023-11-30 07:22:01 25 4
gpt4 key购买 nike

 public static ArrayList<ArrayList<Integer>> powerSet(ArrayList<Integer> originalList) {
ArrayList<ArrayList<Integer>> sets = new ArrayList<>();

ArrayList<Integer> list = new ArrayList<Integer>(originalList);
int p=2;
ArrayList<Integer> st=new ArrayList<>();
while(p<=originalList.size())
{
for(int i=0;i<=originalList.size()-p;i++)
{
for(int j=0;j<p;j++)
{
st.add(list.get(i+j));
}
sets.add(st);// sets recieves a st that is empty which is not the case
Iterator it=st.iterator();
System.out.print("adding it to our sets ");
while(it.hasNext())
System.out.print(it.next()+" ");// prints the elements contained inside and proves that st is not empty
System.out.println("");
st.clear();
}
p+=1;
}
return sets;
}

我已经创建了上面的函数来返回列表中连续元素的幂集,并且每个集合的大小都大于2。但是由于一些未知的问题,列表“st”甚至无法添加到数组列表“集合”的数组列表中尽管 arraylist 'st' 打印效果很好。

最佳答案

该问题是由 sets.add(st); 行引起的然后调用“st.clear()”。由于 Java 通过引用传递对象,sets包含确切的对象 st 。这意味着对 st 的任何后续更改将更改 sets 的内容。要避免此问题,请复制 st添加到新对象之前将其添加到 sets 。尝试替换sets.add(st);sets.add(new ArrayList<Integer>(st));

关于java - 无法将元素添加到数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37402493/

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