如何创建固定大小的对象的数组列表,并将剩余的值传递给下一个数组列表
我需要创建大小为1000的Arraylist,当用户输入一些值时动态创建。如果用户输入必须动态创建2200个值,每个1000个ArrayLists和200个Arraylist。我应该怎么办?我只知道我可以使用物体的Arraylist。请帮助如何创建固定大小的对象的数组列表,并将剩余的值传递给下一个数组列表
您可以使用ArrayList的size()
方法检查大小是否已达到1000,然后在另一个数组列表中添加条目。
谢谢你..我可以使用..但如何使用对象动态创建arraylists? – user2159564 2013-03-12 06:47:26
您可以使用GuavasLists.partition
操作将所有数据的列表分割为所需大小的块+其余块中的一块。总是为我工作。 Check the javadoc here if you're unsure。
谢谢..但我需要创建单独的列表。 – user2159564 2013-03-12 06:44:58
那么它返回一个List列表,你可以从中检索它们。 :) – Scorpio 2013-03-12 06:49:10
由于您从未指定过必须初始化对象,因此您可以使用它。
public List<ArrayList<Object>> dynamicSizedLists(final int size) {
List<ArrayList<Object>> retVal = new LinkedList<ArrayList<Object>>();
final int MAX_SIZE = 1000;
int iterations = size/MAX_SIZE;
for(; iterations > 0; iterations--) {
retVal.add(new ArrayList<Object>(MAX_SIZE));
}
retVal.add(new ArrayList<Object>(size % MAX_SIZE));
return retVal;
}
您可以在这些设备通过elementData
私有字段合理分区调试器观察。
非常感谢你:-) – user2159564 2013-03-12 08:22:27
试试这个(注意,我没有使用泛型,因为你不能有通用阵列):
ArrayList entered = new ArrayList();
Scanner in = new Scanner(System.in);
while(true)
{
try
{
System.out.print("Enter a number (enter a non-number to stop)\n>");
entered.add(in.nextInt());
}
catch(InputMismatchException e)
{
break;
}
}
List[] lists = new List[entered.size()/1000 + 1];
int currentElement = 0;
for(int i = 0; i < lists.length; ++i)
{
lists[i] = entered.subList(currentElement, (currentElement + 1000 < entered.size()) ? currentElement + 1000 : entered.size());
currentElement += 1000;
}
你在哪里看到数组被提及? – Makoto 2013-03-12 06:32:38
你能告诉我如何去使用对象的数组列表吗? – user2159564 2013-03-12 06:46:06
对不起,您需要从列表中获取或删除元素时进行类型转换。修复了另一个错误,需要在继续下一次迭代之前将1000添加到currentElement中。 – gparyani 2013-03-12 17:12:50
[?你尝试过什么(http://mattgemmell.com/2008/12/ 08 /你有什么试过/) – 2013-03-12 06:18:33
你可以发表一些代码吗?你试过什么? – Ajit 2013-03-12 06:19:17
如果是有用的,请记住接受正确的答案。 – Javier 2013-03-12 09:02:27