2010-02-11 66 views
4

我需要一个类似于表的数据结构的Java实现,我可以动态插入或删除行和列。我需要非常快速地从任何行或列中获取数据,并且无需在列上选择行,或反之亦然。Java的动态表/矩阵数据结构

有谁知道这种数据结构已经实现的库吗?

回答

3

你也许能够使用的DefaultTableModel。它打算与JTable一起使用,但没有理由不能单独使用。您需要添加方法来检索整行或列的数据。

+0

这很有创意,我喜欢。 – 2010-02-11 19:14:40

+1

我唯一担心的是,如果您真的每秒钟访问数千行次的行和列,它将使用Vectors来存储这会增加不必要的同步开销。该方法是有效的,只是维护一个列表清单。 – Kevin 2010-02-11 19:17:01

+0

其父'AbstractTableModel'使得您可以轻松使用自己的数据结构。您需要编写自己的更新代码,但通知机制已到位。 http://java.sun.com/javase/6/docs/api/javax/swing/table/AbstractTableModel.html – trashgod 2010-02-11 20:56:11

0

也许JQL或HSQL DB

+0

JQL只是查询现有数据结构的语法糖。我真的怀疑在我的情况下,全面的SQL数据库是一个解决方案(我需要从该表中选择每秒数千次的行/列)。 – 2010-02-11 19:00:43

+0

HSQLDB非常轻便,我认为至少应该运行性能测试以查看它是否满足您的要求。 – 2010-02-11 19:14:16

1

如果性能至关重要,您可以使用2D阵列并执行reallocation algorithm(例如加倍),以使其增长。

+0

虽然如此。如果首次提出的解决方案的性能证明不够,则会这样做。 – 2010-02-11 20:18:35

0

您可以简单地使用List<List<YourClass>>。或者,甚至更简单的Map<Integer, List<YourClass>>将行号(第一个参数,Integer)映射到一行(第二个参数,YourClass对象列表,List<YourClass>)...并围绕此collection构建DataModel类,以确保遍历的可能性通过相同数量的通过实现自定义Iterator,每行中的元素(即使该行没有通过仅返回空值或空对象或类似行为而具有所有元素)。