繁体   English   中英

Java 2D数组列表

[英]Java 2D arraylists

我无法理解2D数组列表,它们使我感到困惑,但是我能理解2D数组,但是正如我之前在CPython使用它们的“嵌套列表”一样,有人可以解释这两个代码之间的区别吗?

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添加任何对象,例如nullStringObjectString[] 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM