2012-05-02 177 views
1

我有一个数据表(不同行的列数可以不同)。我还需要能够删除或添加新的数据行。存储数据表的最佳方法

什么是最好的方式来存储这些数据?

我的第一个猜测是ArrayList

+0

数据的表传达了* *至少两个维度。你是在想一个数据库还是一个'Map'呢? – Makoto

+2

创建包含数组的Row类并使用ArrayList 来包含您的“表”。当然,这取决于您的使用情况,但只有您可以根据您的需求正确设计它。 –

+0

使用多维数组请参阅http://www.homeandlearn.co.uk/java/multi-dimensional_arrays.html –

回答

3

两种方法:

  1. 转换一切字符串和使用ArrayList<List<String>>其中每个条目是一个ArrayList<String>代表一行。

    • 优点:不需要创建自己的类来表示“行”。
    • 缺点:需要转换数据,不能在不转换数据的情况下进行数学运算,需要确保所有行的长度相同。

  2. 正如dystroy说,创建表示在表中一类,并使用ArrayList<Row>

    • 优势:项目保持自己的实际类型,行不具有可变长度(除非您希望他们),并且您可以使用有意义的方式访问列(例如row.getDate()而不是row.get(3))。
    • 缺点:可能是更多的工作来创建额外的类。
1

我会选择LinkedList的,特别是如果你希望你的列表,作为一个堆栈工作。

ArrayList的主要缺点是,当达到容量时,此表会重新创建一个更大的表=>表分配和副本获取性能较慢。

鉴于使用LinkedList,没有能力的概念,因为所有的工作都是由指针来完成的。

据我所知,主要(也许是唯一的,大多数情况下...)理由更喜欢ArrayList而不是LinkedList,当你主要想访问(读取部分如此)一个特定的索引。使用ArrayList它是O(1),而使用LinkedList它是O(n)。

你可以阅读这篇文章以了解更多信息:

When to use LinkedList over ArrayList?

相关问题