java - 数组的 ArrayList 与 ArrayLists 的数组与类似的东西

标签 java data-structures arrays arraylist tablemodel

我正在创建一个 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);
}

即创建一个 ArrayList 数组,每个 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];
}

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

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

最佳答案

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

所以你的结构是:

List<Object[]> rows;

其中数组元素是一行。

然而,对于您的行对象应该是什么,有几个选项:

  1. 一个数组;
  2. List 或其他Collection;或
  3. 自定义对象。

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

关于java - 数组的 ArrayList 与 ArrayLists 的数组与类似的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2316632/

相关文章:

java - 从 solr 获取同义词或根词

javascript - 将 Array.map 与新的 Array 构造函数一起使用

php - 仅在函数内部循环迭代一次

java - 接口(interface)中的继承

java - 如何在内部类中调用外部类的构造函数

c - 为结构体数组分配内存时出现错误

java - java中的类字典(数据结构)

arrays - 给定区间内 1 个未排序数组元素的差异

java - 如何跟踪java基本类型数组?

java - 假阳性和假阴性