2014-11-24 107 views
-1

我正在从一个ArrayList中读取64000个值,每次读取64个值。读取64个值后,应将其转换为数组,并将该列表清除以容纳第二组64个值值。这个方法应该继续下去,直到它到达原始列表的末尾。我写了下面的代码,但看起来像我的输出列表返回超过64个值,这不是我的目标。任何人都可以告诉我我在哪里做错了?将整数列表转换为块

ArrayList<Integer> output = extractIntegers(array);//some method in the code 
for(int i=0;i<output.size();i+=64) 
{ 
    blocks.addAll(output.subList(i, i+64)); 
    Integer[] b = blocks.toArray(new Integer[blocks.size()]); 
    System.out.println(b); 
    b = null; 
} 
+1

需要清除'blocks'每次。事实上,什么是“块”?为什么不只是调用'output.subList(i,i + 64).toArray()'?而且你不能打印这样的数组(你可以打印一个List)。 – Thilo 2014-11-24 05:50:01

+0

将blocks.clear();在我的情况下工作?或者我应该使用删除?我怎样才能让清单变成空的? – 2014-11-24 06:02:03

回答

0

您是否在每次迭代结束时清空blocks?发布的代码不显示它可能可能是您的问题的原因。

1

这应该工作

ArrayList<Integer> output = extractIntegers(array);//some method in the code 
for(int i=0;i<output.size();i+=64) 
{     
    blocks=output.subList(i, i+64); 
    Integer[] b=blocks.toArray(new Integer[blocks.size()]); 

    System.out.println(b); 
} 
+0

为什么你最终不会清空数组?或者块列表? – 2014-11-24 06:02:44

+0

你不需要清空'b',因为它无论如何都会超出范围。每次迭代都会重置“块”(不再有'addAll',只是覆盖整个实例)。 – Thilo 2014-11-24 06:03:41