我需要一個類似於表的數據結構的Java實現,我可以動態插入或刪除行和列。我需要非常快速地從任何行或列中獲取數據,並且無需在列上選擇行,或反之亦然。Java的動態表/矩陣數據結構
有誰知道這種數據結構已經實現的庫嗎?
我需要一個類似於表的數據結構的Java實現,我可以動態插入或刪除行和列。我需要非常快速地從任何行或列中獲取數據,並且無需在列上選擇行,或反之亦然。Java的動態表/矩陣數據結構
有誰知道這種數據結構已經實現的庫嗎?
你也許能夠使用的DefaultTableModel。它打算與JTable一起使用,但沒有理由不能單獨使用。您需要添加方法來檢索整行或列的數據。
也許JQL或HSQL DB
JQL只是查詢現有數據結構的語法糖。我真的懷疑在我的情況下,全面的SQL數據庫是一個解決方案(我需要從該表中選擇每秒數千次的行/列)。 – 2010-02-11 19:00:43
HSQLDB非常輕便,我認爲至少應該運行性能測試以查看它是否滿足您的要求。 – 2010-02-11 19:14:16
如果性能至關重要,您可以使用2D陣列並執行reallocation algorithm(例如加倍),以使其增長。
雖然如此。如果首次提出的解決方案的性能證明不夠,則會這樣做。 – 2010-02-11 20:18:35
HashBasedTable來自Google的類Guava這樣做。如果行需要按排序順序,還有TreeBasedTable。
您可以簡單地使用List<List<YourClass>>
。或者,甚至更簡單的Map<Integer, List<YourClass>>
將行號(第一個參數,Integer)映射到一行(第二個參數,YourClass
對象列表,List<YourClass>
)...並圍繞此collection構建DataModel類,以確保遍歷的可能性通過相同數量的通過實現自定義Iterator
,每行中的元素(即使該行沒有通過僅返回空值或空對象或類似行爲而具有所有元素)。
這很有創意,我喜歡。 – 2010-02-11 19:14:40
我唯一擔心的是,如果您真的每秒鐘訪問數千行次的行和列,它將使用Vectors來存儲這會增加不必要的同步開銷。該方法是有效的,只是維護一個列表清單。 – Kevin 2010-02-11 19:17:01
其父'AbstractTableModel'使得您可以輕鬆使用自己的數據結構。您需要編寫自己的更新代碼,但通知機制已到位。 http://java.sun.com/javase/6/docs/api/javax/swing/table/AbstractTableModel.html – trashgod 2010-02-11 20:56:11