【问题标题】:How to create an 2D ArrayList in java? [duplicate]如何在 java 中创建一个 2D ArrayList? [复制]
【发布时间】:2013-06-02 03:28:00
【问题描述】:

我想创建一个二维数组,每个单元格都是一个ArrayList

我考虑了这个定义,但我不能给它们添加任何东西 这些定义是真的吗?!

ArrayList<ArrayList<String>> table = new ArrayList<ArrayList<String>>();

ArrayList[][] table = new ArrayList[10][10];

//table.add??????

请帮帮我

【问题讨论】:

  • 嗨。问题的标题与其内容不一致。您想要 ArrayList 的 2D 数组(最终类似于 3D)还是 2D ArrayList(ArrayList 的 ArrayList)?如果你问这个作为你的作业,你能写出最初的问题吗?最后,你绝对需要声明 ArrayList。你可以使用 list intead 吗?
  • 哦,您在问题的第一部分声明了 String 的 2D ArrayList。您需要将 String 放入内部 ArrayList 是否正确?

标签: java arraylist multidimensional-array


【解决方案1】:

最好的方法是在List 中使用List

List<List<String>> listOfLists = new ArrayList<List<String>>();  

【讨论】:

    【解决方案2】:

    我想创建一个每个单元格都是一个 ArrayList 的二维数组!

    如果你想创建一个ArrayList 的二维数组。那么你可以这样做:

    ArrayList[][] table = new ArrayList[10][10];
    table[0][0] = new ArrayList(); // add another ArrayList object to [0,0]
    table[0][0].add(); // add object to that ArrayList
    

    【讨论】:

    • 仅当arrayListObject 不是ArrayList 对象时才会出现编译器错误。
    • 表 [0][0] 为空,因此您需要立即对其进行初始化。
    • 除了 null 方面,这是我们在这里看到的最好的解决方案。 +1
    • 谢谢,忽略了。
    • 实际上,我收到一个警告unchecked call to add(e) as a member of the raw type 没有为内部数组列表指定数据类型,该怎么做?
    【解决方案3】:
    ArrayList<String>[][] list = new ArrayList[10][10];
    list[0][0] = new ArrayList<>();
    list[0][0].add("test");
    

    【讨论】:

      【解决方案4】:

      首先,当你在java中声明一个变量时,你应该使用接口来声明它,即使你在实例化它时指定了实现

      ArrayList<ArrayList<String>> listOfLists = new ArrayList<ArrayList<String>>();
      

      应该写

      List<List<String>> listOfLists = new ArrayList<List<String>>(size); 
      

      然后你必须实例化你的二维数组的所有列

          for(int i = 0; i < size; i++)  {
              listOfLists.add(new ArrayList<String>());
          }
      

      你会像这样使用它:

      listOfLists.get(0).add("foobar");
      

      但是如果你真的想“创建一个每个单元格都是一个ArrayList的二维数组!”

      那你必须去dijkstra way

      【讨论】:

      • 不应该是 for(List col : listOfLists )?
      • 确实 :) 随意编辑
      • 这只是错误的,你不能这样修改listOfLists结构!您正在遍历一个空结构,因此 for 将不执行任何操作,随后的 get 将引发异常。
      • 确实 :) 它需要一个好的旧的
      • 您好,我看到您在 ( ) 内指定了大小,即 ArrayList 在外侧的大小。我应该怎么做才能指定外部ArrayList中每个内部ArrayList的大小?
      【解决方案5】:

      这可以通过创建List数据结构的对象来实现,如下

      列表列表 = new ArrayList();

      欲了解更多信息,请参阅此链接

      How to create a Multidimensional ArrayList in Java?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-04
        • 2021-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-03
        • 2021-05-19
        • 2015-07-19
        相关资源
        最近更新 更多