我正在创建一个 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;
其中数组元素是一行。
然而,对于您的行对象应该是什么,有几个选项:
- 一个数组;
List
或其他Collection
;或- 自定义对象。
(3) 可能可以通过使用某种接口(interface)来完成,该接口(interface)允许您查询列的数量、类型和名称。
关于java - 数组的 ArrayList 与 ArrayLists 的数组与类似的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2316632/