Java 在内存中存储2D表结构的合适数据结构是什么?

Java 在内存中存储2D表结构的合适数据结构是什么?,java,data-structures,store,in-memory,Java,Data Structures,Store,In Memory,我有一个从底层数据库读取的2D表结构,我想知道,存储它的最佳内存数据结构是什么。 其中,可以访问它进行进一步的读取、操作等。一组hashmaps键控的列名=>值对我来说很有意义。我会做一些类似于 Map<String, Map<String,String>> table = new HashMap<String, Map<String,String>>(); 因此,在阅读表格后,您可以这样使用它: map.get("abc").get("colu

我有一个从底层数据库读取的2D表结构,我想知道,存储它的最佳内存数据结构是什么。
其中,可以访问它进行进一步的读取、操作等。

一组hashmaps键控的列名=>值对我来说很有意义。

我会做一些类似于

Map<String, Map<String,String>> table = new HashMap<String, Map<String,String>>();
因此,在阅读表格后,您可以这样使用它:

map.get("abc").get("column_b").equals("xyz")
map.get("def").get("column_c").equals("456")
希望这有帮助。
注意:我选择了第一个具有字符串键的映射,因为您的表可能没有整数作为ID。如果您认为Integer更适合,可以更改它们

Guava库对[表]有两种不同的实现[http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Table.html]接口:
HashBasedTable
TreeBasedTable
。你应该看看。

在我看来,像这样的事情通常都是代码味道。您可能需要考虑创建一个bean,该bean表示一个表上的行,并使用<代码>列表>代码>而不是一些通用表恐惧。
当然,这是假设您事先知道表格的样子。

您能解释一下这个模型吗?我在想:映射这样:列名映射到字符串列数据列表请解释一下您的模型?thnxIt一个包含其他贴图的贴图。它就像一个二维数组,除了它的二维贴图。我不知道还有什么要解释的,除了你可能应该尝试一下。但是你能解释一下它的语义吗,比如第一张地图的关键是什么?第二张地图的关键是指什么?第二张地图的价值是什么?除此之外,我可以想象它,但我有兴趣知道你推荐的使用方法。。再次感谢是的,谢谢。。但实际上我的特定表没有主键,它只包含列和数据?!我想你可以用上面的来做类似的事情。不要使用地图,而是尝试类似地图的列表。我不打算举一个这样的例子,因为基本上是一样的。祝你好运别忘了接受正确的答案!您尚未定义需要执行的操作,因此很难给出解决方案。您是否需要按照数据从数据库返回的顺序访问数据,然后将行存储在列表中。如果没关系,你可以用地图。如果所有数据都只是字符串,那么您可以将每一行存储在一个列表中。如果数据不同,您需要对数据进行其他处理,那么您可能应该创建一个bean,以便能够正确地访问数据。
map.get("abc").get("column_b").equals("xyz")
map.get("def").get("column_c").equals("456")