Java 包含 2 列的 ArrayList

Java ArrayList with 2 columns

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

我看到一些建议:

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

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

我还看过:

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

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

你可以试试

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

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

像这样:

public MyObject {
   Integer integer1;
   Integer integer2;
}


List<MyObject> myObjList = new ArrayList<>();

MyObject mo = new MyObject(){
...

myObjList.add(mo);

Java 是面向对象的语言,那么为什么不创建 ArrayList<Column> 呢? 您可以创建一个 class 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())

您基本上需要创建一个包含 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?

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

示例如何像您一样使用列表创建二维结构:

   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);