[英]Java 2D arraylists
我无法理解2D数组列表,它们使我感到困惑,但是我能理解2D数组,但是正如我之前在C
和Python
使用它们的“嵌套列表”一样,有人可以解释这两个代码之间的区别吗?
ArrayList<ArrayList<String>> biDemArrList = new ArrayList<ArrayList<String>>();
ArrayList<String> temp = new ArrayList<String>(); // added ()
temp.add("Hello world.");
temp.add("sup");
biDemArrList.add(temp);
ArrayList<String> it = new ArrayList<String>();
it.add("1");
it.add("0");
biDemArrList.add(it);
System.out.println(temp);
System.out.println(it);
System.out.println(biDemArrList);
还有这个 :
ArrayList[][] table = new ArrayList[10][10];
table[0][5] = new ArrayList();
table[1][1] = new ArrayList();
for (int i = 0; i < 12; i++) {
table[0][5].add("0");
}
for (int i = 0; i < 9; i++) {
table[1][1].add("1");
}
System.out.println(table[0][5]);
System.out.println(table[9][9]);
像在C中一样,非原始类型的数组不会被初始化(仅原始类型的数组是...)。
ArrayList[][] table = new ArrayList[10][10]; table[0][5] = new ArrayList(); table[1][1] = new ArrayList();
在这里,您创建了一个由100个元素组成的数组,但是您只初始化了2个元素。
ArrayList是List接口的可调整大小的数组实现。 这节课。 大多数开发人员选择Arraylist而不是Array,因为它是传统Java数组的很好替代方案。
您可以向List添加任何对象,例如null
, String
, Object
, String[]
。 ArrayList<String>
也是对象,这意味着您可以添加到列表。
您说我有ArrayList
,可以添加其他ArrayList
。 结果将是ArrayList<ArrayList>>
。 但是我们只想将String添加到内部ArrayList中。 然后我们创建ArrayList<String>
因此,我们有了字符串ArrayList<String>
,可以将其添加到其他列表ArrayList<ArrayList>>
ArrayList<ArrayList<String>> mainArrayList = new ArrayList<ArrayList<String>>();
ArrayList<String> subArrayList = new ArrayList<String>();
/* Added elements into subArrayList */
subArrayList.add("Yogesh");
subArrayList.add("Pawar");
ArrayList<String> subArrayList2 = new ArrayList<String>();
/* Added elements into subArrayList2 */
subArrayList2.add("Java");
subArrayList2.add("Programmer");
/* Adding elements into mainArrayList */
mainArrayList.add(subArrayList);
mainArrayList.add(subArrayList2);
for (int i = 0; i < mainArrayList.size(); i++) {
for (int k = 0; k < mainArrayList.get(i).size(); k++) {
System.out.print(" " + mainArrayList.get(i).get(k));
}
System.out.println();
}
和...之间的不同
清单清单
ArrayList<ArrayList<String>> biDemArrList = new ArrayList<ArrayList<String>>();
和
列表数组数组
ArrayList[][] table = new ArrayList[10][10];
是第二个实际上不是二维的,而是三维的。 您最终得到了10个长度为10的数组,可以将ArrayLists放入其中。 在“列表列表”示例中,您有一个列表,可以将其他列表放入其中。
使用Object[][]
或Primitive [] [],您必须像new Object[2][8]
一样分配2D数组,该数组具有准确的“行”和“列”数。
另一方面,使用ArrayList<ArrayList<...>>
尝试理解以下代码:
ArrayList<ArrayList<String>> biDemArrList = new ArrayList<>();
ArrayList<String> a0 = new ArrayList<>();
a0.add("string_1");
ArrayList<String> a1 = new ArrayList<>();
a1.add("strfdfas");
a1.add("adfadsfasdfasdfasfaf");
biDemArrList.add(a0);
biDemArrList.add(a1);
biDemArrList.stream().forEach(System.out::println);
第一个“行”具有一个元素,第二个“行”具有两个元素。 这仅是一个示例...使用arr [] []无法实现此目的。
这种不确定背后的原因是什么,但是我会在这里分享我的经验,
数组是数据结构的固定大小,一旦初始化数组,就无法修改大小。 为了解决这个问题,我们有了ArrayList。 Arraylist的长度可变。
在第二个代码段中,如果您正在寻找固定大小的2D ArrayList,我建议您使用2D Arrays。
如果要利用Collection功能,以后可以将Arrays转换为ArrayList对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.