我有150行和10列的巨大表数据,每列都有String数据。存储数据后,我还必须遍历以查找特定值。所以,我正在寻找在这种情况下最佳数据结构的答案,包括性能,遍历的灵活性。
我想到了Array,ArrayList,Hashmap。
另外,我在SO上发现了类似的问题,但他们没有回答我的问题。
编辑:数据是字母和整数的混合。无法排序并包含重复项。
答案 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