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);
我需要使用数组列表,因为我不知道我需要多少行,但我知道我需要 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);