[英]List of List but by output is not coming right
我一直在尝试将整数列表插入另一个列表,但似乎我在犯一些错误,我的输出不正确,有人可以帮忙吗? 您还可以评论http://goo.gl/xdLP9H
public class ListInsideList {
public static void main(String[] args) {
List<List<Integer>> newList = new ArrayList<List<Integer>>();
List<Integer> tempList = new ArrayList<Integer>();
List<Integer> originalList = new ArrayList<Integer>();
for (int i = 1; i <= 10; i++) {
originalList.add(i);//adding values to list
}
for(Integer value : originalList){
tempList.add(value);
if(tempList.size()==5)
{
newList.add(tempList);
System.out.println("iteration:"+newList);
tempList.clear();//clearing list
}
}
System.out.println("final:"+newList);
}
}
输出:
iteration:[[6, 7, 8, 9, 10], [6, 7, 8, 9, 10]]
final :[[], []]
required is:iteration:[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
final:[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
您的最终答案需要有2个单独的列表。
[1, 2, 3, 4, 5] // List One
[6, 7, 8, 9, 10] // List Two
那么,您在哪里创建这两个单独的列表? 您没有,只是在每次迭代中重复使用相同的tempList
。 将tempList
添加到另一个List
不会使它与变量名“ tempList ”分离,后者是对相同对象的引用,然后您clear()
。
代替clear()
,每次创建一个新的:
tempList.clear(); //clearing list
tempList.clear(); //clearing list
tempList = new ArrayList<>(); // new List
tempList = new ArrayList<>(); // new List
您可以替换newList.add(tempList);
与:
1。
注意:要使此方法起作用,您的tempList必须为ArrayList(因为List不可序列化);
newList.add(SerializationUtils.clone(tempList));
templist.clear();
2。
List<Integer> list = new ArrayList<>(newList.size());
list.addAll(newList);
newList.add(list);
newList.clear();
您的列表在最终的打印声明中为空。 如图所示,两个列表都是空的,因此无法打印任何内容,
System.out.println("final:"+newList.get(0).isEmpty());
和
System.out.println("final:"+newList.get(1).isEmpty());
所以改为尝试
ArrayList<ArrayList<Integer>> newList = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> tempList = new ArrayList<Integer>();
ArrayList<Integer> originalList = new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> finalList = new ArrayList<ArrayList<Integer>>();
for (int i = 1; i <= 10; i++) {
originalList.add(i);//adding values to list
}
for(Integer value : originalList){
tempList.add(value);
if(tempList.size()==5)
{
newList.add(tempList);
System.out.println("iteration:"+newList);
finalList = newList;
}
}
System.out.println("final:"+finalList);
您可以执行以下操作以减少工作量:
更改
newList.add(tempList)
至
newList.add(newArrayList<Integer>(tempList));
为了复制tempList而不使用它的引用
for(Integer value : originalList){
tempList.add(value);
if(tempList.size()==5)
{
newList.add(new ArrayList<Integer>(tempList));
System.out.println("iteration:"+newList);
tempList.clear();//clearing list
}
}
System.out.println("final:"+newList);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.