我想输入一个数组,其中输入的数量是不固定的。
输入如下
3
3 ab ab bd
2 ab na
5 ab bl jhg fhd djbj
我提供了一个样本输入,输入类似于一个问题。
初始输入数为3。
那么每行可以有I个输入,即第一个3个输入字符串,第二个2个输入字符串,第三个5个输入字符串。请帮助我如何存储输入。
我认为这个问题是基于一个误解。
如果您将数据放入ArrayList
(或大多数其他List
类),您不需要告诉列表它将有多大。只需调用add
将每个元素添加到列表中。ArrayList
实现负责调整1的大小。这也适用于列表的列表。
话虽如此,如果你真的需要为N
元素2分配一个ArrayList
空间,这样做的方法是:
ArrayList<Something> list = new ArrayList<>(N);
(注意这里设置的是容量而不是列表的大小。列表将返回0
作为列表的大小…直到你添加了元素。)
从输入文件中组装一个列表的列表的方法是使用嵌套循环。外部循环填充外部列表。内部循环读取由列表元素组成的行,并填充内部列表。
另一方面…如果你正在构建一个数组,或者一个数组的数组,那么每个组件数组必须用正确的大小创建,因为数组不能调整大小。
1 -在某些情况下,告诉列表可能包含多少元素会更有效。但在大多数情况下,性能差异并没有实际的区别。小心过早的优化!!
2 -注意,如果您的大小估计不正确,设置不正确的容量实际上可能对空间利用率和性能有害。
使用列表的列表
ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
list.add(new ArrayList<String>());
list.get(0).add("Hello");
list.get(0).add("Me is");
list.get(0).add("Ded");
list.add(new ArrayList<String>());
list.get(1).add("Eh");
第一个元素有3个元素,第二个元素有1个。