使用String数据类型实现2D Matrix的最佳数据结构是什么?

时间:2016-05-17 05:26:31

标签: java data-structures

我有150行和10列的巨大表数据,每列都有String数据。存储数据后,我还必须遍历以查找特定值。所以,我正在寻找在这种情况下最佳数据结构的答案,包括性能,遍历的灵活性。

我想到了Array,ArrayList,Hashmap。

另外,我在SO上发现了类似的问题,但他们没有回答我的问题。

编辑:数据是字母和整数的混合。无法排序并包含重复项。

3 个答案:

答案 0 :(得分:4)

似乎这样的表格大小组合2D Array[][] + Hashmap将是一个很好的选择。简单而有效。

Array包含值,允许以任何顺序遍历表。

HashMap包含对<String; TPoint>(数组中的坐标 - 行/列对)。

如果您只需知道表格中是否包含某些字符串,则不要在地图中存储坐标。

我认为@krzyk提出的Guava Table提供了类似的功能(不了解性能)

答案 1 :(得分:2)

Guava有一个看似你可以使用的Table结构,它有containsValue(...)方法来查找特定值,你也可以遍历它。

以下是Table的一般explanation

  

通常情况下,当您尝试一次索引多个键时,最终会出现类似Map<FirstName, Map<LastName, Person>>的内容,这些内容难以使用且难以使用。 Guava提供了一种新的集合类型Table,它支持任何“行”类型和“列”类型的用例。

您很可能对以下Table界面的实现感兴趣:

  

ArrayTable,它要求在构造时指定完整的行和列,但需要二维数组支持,以提高表密集时的速度和内存效率。 ArrayTable与其他实现的工作方式略有不同

答案 2 :(得分:1)

就这种情况而言,我会使用String [] [],因为你可以访问复杂度为O(1)的元素

但正如我所说,仅在这种情况下。如果动态修改了行数或列数,那么我将使用List<List<String>>,更准确地说是ArrayList