【问题标题】:How to create a 2D ArrayList?如何创建 2D ArrayList?
【发布时间】:2013-07-17 00:40:02
【问题描述】:

我正在尝试使用 Java 创建一个二维数组。行的大小是已知的,而列的大小是未知的。这是我的代码,它不起作用。谁能给我一些想法?

ArrayList<Integer> paths[];
paths = new ArrayList[2];// 2 paths
for (int i=0; i<2; ++i)
    paths[i].add(1); // add an element to each path

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

    在添加之前初始化数组元素。将初始化放入for循环:

    @SuppressWarnings("unchecked")
    ArrayList<Integer>[] paths = new ArrayList[2];
    
    for (int i=0; i<2; ++i) {
        paths[i] = new ArrayList<Integer>();
        paths[i].add(1);
    }
    

    这样可以避免NullPointerException

    【讨论】:

    • 第一行出现错误提示“无法创建 ArrayList 的通用数组”。
    • 你用什么编辑器?什么java版本?在我的 Eclipse 中,它只是一个警告,并且可以完美地编译和运行(我使用 1.7 编译器和 1.6 源代码级别)。我还设置了@SuppressWarnings("unchecked"),它甚至没有警告。
    • 我使用eclipse和JDK7u10
    • 谢谢 GaborSch,我明白了!但是如何将警告设置为“未选中”?为什么 ArrayList[] paths = new ArrayList[2] 不是 ArrayList[] paths = new ArrayList[2]?
    • @user2570387 懒惰的方式:将鼠标放在警告标记上,选项将显示。
    【解决方案2】:

    我会推荐这个

        ArrayList<ArrayList<Integer>> paths = new ArrayList<ArrayList<Integer>>();
            for (int i=0; i<2; ++i)
                paths.add(new ArrayList<Integer>());
    

    【讨论】:

      【解决方案3】:

      这是一个“二维”ArrayList

      ArrayList<ArrayList<Integer>> paths = new ArrayList<>();
      

      这里是 Java

      ArrayList<ArrayList<Integer>> paths = new ArrayList<ArrayList<Integer>>();
      

      【讨论】:

      • 类型不匹配:无法从 ArrayList> 转换为 ArrayList>
      • 类型不匹配:无法从 ArrayList> 转换为 ArrayList>[]
      • @user2570387 我发布的行并没有尝试转换为ArrayList&lt;ArrayList&lt;Integer&gt;&gt;[] ,它创建了ArrayListsArrayListsArrayListInteger
      • "'' 运算符不允许用于低于 1.7 的源级别" - 很可能 OP 的版本低于 1.7,因此这可能行不通。
      猜你喜欢
      • 2016-08-04
      • 1970-01-01
      • 2015-04-16
      • 2013-06-02
      • 1970-01-01
      • 2021-05-19
      • 2021-11-20
      • 2011-12-15
      • 1970-01-01
      相关资源
      最近更新 更多