Java的动态表/矩阵数据结构

5

我需要一个类似表格的数据结构的Java实现,可以动态插入或删除行和列。我需要快速获取任何行或列的数据,并且在选择行或列时没有额外的开销。

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

5个回答

3

您可以尝试使用DefaultTableModel。它的设计初衷是与JTable一起使用,但也可以单独使用。您需要添加方法来检索完整行或列的数据。


1
我唯一的担忧是它使用向量进行存储,如果您确实每秒访问数千次行和列,则会增加不必要的同步开销。但这种方法是有效的,只需维护一个列表即可。 - Kevin
它的父类AbstractTableModel使得使用自己的数据结构变得容易。你需要编写自己的更新代码,但是通知机制已经就位。http://java.sun.com/javase/6/docs/api/javax/swing/table/AbstractTableModel.html - trashgod

1
如果性能很关键,您可以使用2D数组,并实现重新分配算法(例如加倍),以便它可以增长。

考虑一下。如果第一个提出的解决方案的性能不够,将会这样做。 - Alexander Temerev

1

HashBasedTable类来自Google Guava库,可以实现这个功能。如果需要按行排序,则还有TreeBasedTable可用。


0

也许是JQL或HSQL DB


JQL只是一种用于查询现有数据结构的语法糖。我真的怀疑完整的SQL数据库是我的解决方案(我需要每秒从该表选择数千次的行/列)。 Translated text: JQL只是一种用于查询现有数据结构的语法糖。我真的怀疑完整的SQL数据库是我的解决方案(我需要每秒从该表选择数千次的行/列)。 - Alexander Temerev
HSQLDB非常轻量级,我认为至少值得进行性能测试,以查看是否符合您的要求。 - Eli Acherkan

0

你可以简单地使用 List<List<YourClass>>。或者,更简单的是使用 Map<Integer, List<YourClass>> 将行号(第一个参数,整数)映射到一行(第二个参数,YourClass 对象的列表,List<YourClass>)... 并围绕这个集合构建一个 DataModel 类,确保能够遍历每一行中相同数量的元素(即使该行没有所有元素,只需返回 null 或空对象等),通过实现自定义的 Iterator


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接