ArrayList的数组与ArrayLists的数组相似

Joo*_*kka 6 java arrays arraylist tablemodel data-structures

我正在创建一个TableModel,它将具有固定数量的列,但行数将会发生变化(大多数情况下,随着时间的推移而增加).哪种方法可以更好地存储数据,

ArrayList[] columns = new ArrayList[numberOfColumns];
// Each array element is one column. Fill each of them with a new ArrayList.
...
public Object getValueAt(int row, int column) {
    return columns[column].get(row);
}
Run Code Online (Sandbox Code Playgroud)

即创建一个ArrayLists 数组,每个数组ArrayList代表一列,或者:

ArrayList<Object[]> rows = new ArrayList<Object[]>();
// Each ArrayList element is one row.

public Object getValueAt(int row, int column) {
    return rows.get(row)[column];
}
Run Code Online (Sandbox Code Playgroud)

即创建一个包含数组的ArrayList,每个数组代表一行.

有哪些想法在速度或存储方面更有效?备选方案1要求ArrayList在每个添加的行中扩展N s,而备选方案2要求仅扩展一个,ArrayList但也创建长度为N的新数组(以表示新行).还是有一个明显的,更好的解决方案?

cle*_*tus 6

如果列数是固定的,那么您的数据可能是面向行的,或者至少是行变量,此时每行应该是一个数组.固定数量的列意味着您无需重新分配阵列.

所以你的结构是:

List<Object[]> rows;
Run Code Online (Sandbox Code Playgroud)

数组元素是一行.

但是,您的行对象应该有几个选项:

  1. 数组;
  2. A List或其他Collection; 要么
  3. 自定义对象.

(3)可以通过使用某种接口来完成,该接口允许您查询列的数量,类型和名称.