2012-05-02 178 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?

相關問題