【问题标题】:Java ArrayList with 2 columns具有 2 列的 Java ArrayList
【发布时间】:2017-12-03 20:35:09
【问题描述】:

我需要使用数组列表,因为我不知道需要多少行,但我知道我需要 2 列。我不确定如何创建这样的数组列表,添加到两列并从两列读取数据。两列都将包含整数。

我看到了一些建议:

ArrayList<Arraylist<Integer>> name = new ArrayList<ArrayList<Integer>>();

但我可以找到有关如何添加到两列的说明。

我也看过:

ArrayList<Integer[][]> name = new ArrayList<Integer[][]>();

以及方括号的位置和数量的不同变体。 谢谢。

【问题讨论】:

    标签: java arraylist 2d


    【解决方案1】:

    Java 是面向对象的语言,为什么不创建 ArrayList&lt;Column&gt; 呢? 您可以创建一个类Column 来满足您的要求:它可以有setter 和getter,如果您需要支持Integer 以外的其他类型,您可以对其进行泛化。例如:

    class Column<T> {
        private T value;
    
        public Column(T value) {
            this.value = value;
        }
    
        public getValue() {
            return this.value;
        }
    }
    

    然后你声明:

    List<Column<Integer>> list = new LinkedList<>();
    list.add(new Column<Integer>(5));
    System.out.println(list.get(0).getValue())
    

    【讨论】:

      【解决方案2】:

      示例如何使用列表创建二维结构:

         List<List<Integer>> names = new ArrayList<>();
      
              List<Integer> row = new ArrayList<>();
      
              row.add(1); // first column
              row.add(2); // second column
      
              names.add(row); // add row with column
      
      
              System.out.println(names.get(0).get(0)); // get first column from first row
              System.out.println(names.get(0).get(1)); // get second column form first row
      

      但最好的方法是像这样使用自定义对象:

      class CustomRow {
      
      private int col1;
      private int col2;
      
      // getters and setters
      
      }
      
      
      List<CustomRow> tables;
      CustomRow cr = new CustomRow();
      cr.setCol1(1);
      cr.setCol2(2);
      tables.add(cr);
      

      【讨论】:

        【解决方案3】:

        类似这样的:

        public MyObject {
           Integer integer1;
           Integer integer2;
        }
        
        
        List<MyObject> myObjList = new ArrayList<>();
        
        MyObject mo = new MyObject(){
        ...
        
        myObjList.add(mo);
        

        【讨论】:

          【解决方案4】:

          你可以试试

          • 映射并使用键和值来保存值
          • 元组列表
          • 您建议的列表列表

          您没有提供足够的信息来说明您真正想要做什么,但如果您必须使用 List 作为基础,我通常会使用自定义 Tuple 对象的 List,每个对象包含两个值。

          【讨论】:

          • 我想使用列表来存储整数,第一列将存储来自一个 ArrayList 的索引,第二列将存储来自第二个 ArrayList 的索引。列中的整数将是多对多关系。谢谢。
          • 在这种情况下,只需创建一个元组列表。元组只是每个包含两个整数的类,您可以将其称为索引,并且字段可以是整数 x 和整数 y。为方便起见,添加一个构造函数就完成了。如果您希望字段不可更改,请考虑将字段设为 final。
          【解决方案5】:

          您可以尝试创建一个名为 Row 的简单 POJO 类,并有两个变量作为 column1 和 column2。然后将此 Row 对象添加到您的列表中。

          【讨论】:

            【解决方案6】:

            您基本上需要创建一个包含 Integer 类型的 ArrayList 的 ArrayList。然后,您可以将其中两个 ArrayList 添加到主数组列表中。

            List<List<Integer>> myList = new ArrayList<>();
            List<Integer> x = new ArrayList<>();
            x.add(5);
            x.add(6);
            
            List<Integer> y = new ArrayList<>();
            y.add(5);
            y.add(6);
            
            myList.add(x);
            myList.add(y);
            

            根据这个答案:

            How do I declare a 2D String arraylist?

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-04-03
              • 2013-01-17
              • 2014-04-13
              • 2016-12-28
              • 1970-01-01
              • 2012-10-19
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多