【发布时间】:2015-04-22 11:58:58
【问题描述】:
我对 Java 比较陌生,我对哪种类型的数据结构最适合我的情况有疑问。我有一组数据,它们本质上是键值对,但是每个值可能对应于多个键,每个键可能对应于多个值。一个简化的例子是:
- 红苹果
- 青苹果
- 红草莓
- 绿葡萄
- 紫葡萄
考虑到上面的例子,我需要能够返回我有什么颜色的苹果和/或我有什么红色水果。实际数据将根据输入文件动态生成,其中每个集合将包含 100-100,000 个值,每个值可能对应于另一个集合中的数百个值。
存储和解析这些数据的最有效方法是什么?我更喜欢 Java 原生的解决方案,而不是外部数据库之类的解决方案。
This question 是相关的,但我不确定如何在我的情况下应用该解决方案,因为我需要在两个方向上为每个键分配多个值。
【问题讨论】:
-
@Josh - 谢谢,我在搜索中没有找到这个问题。我将查看解决方案,看看我是否可以为我的数据成功实施它们。
-
如果你可以使用外部库(jar),我建议你使用 Guava 的 Table docs.guava-libraries.googlecode.com/git/javadoc/com/google/…,特别是 HashBasedTable。 Guava 是一组来自 Google(不是数据库)的实用程序类。
-
我将创建一个类,其中包含值 a、值 b 对象和方法的列表,以获取值 a 的值和值 b 的值。可能不是最有效的,但最直接的。
标签: java dictionary data-structures bidirectional multivalue