产生多个结果的关键

时间:2012-03-25 17:22:23

标签: java hash

我对编程很陌生,所以如果这是一个愚蠢的问题,我很抱歉。我想知道是否有一种类型的数据可以返回(可能)每个键多个答案。例如:

TestType<int,String> test = new TestType<int,String>();

因此,如果您输入test.getKey(1),则可以获得{“hello”,“this”,“is”,“a”,“test”}。

基本上,是否有一种数据可以返回多个答案,有点像HashMap和List组合?

5 个答案:

答案 0 :(得分:5)

不在标准Java中。但是,您可以使用Guava MultiMap集合类型。还有其他库也提供了多地图集合。

如果由于某种原因您不想使用第三方库,您也可以滚动自己的数据结构。然而,它肯定会重新发明轮子,这有点痛苦。您可以将test定义为Map<Integer, Set<String>>,然后编写访问方法以在适当的条件下使用空集初始化键条目。

请注意,Java不允许将原始类型(例如,int,如您所用)用作泛型类型参数值。您必须使用Integer。由于自动装箱,您仍然可以使用test.get(1)来检索存储在密钥1下的值。

答案 1 :(得分:2)

您可能希望使用MultiMap中的apache commons collections及其具体实施MultiHashMap

您也可以按照建议使用Map<Integer,List<String>>

答案 2 :(得分:1)

您要求的是 multimap Guava中有多个实现,Apache commons collections中有另外一个实现。

答案 3 :(得分:0)

Java不提供multimap,因为它不经常使用(他们的陈述)。但SUN提供了一个关于如何使用MapList自行创建多图的小示例,如下所示:

    Map<String, List<String>> m = new HashMap<String, List<String>>();

您可以在Java Collections/Maps中查看示例。检查多图上的段落,例如代码

答案 4 :(得分:0)

阿米特走在正确的轨道上。您还可以为答案创建一个类。这可以帮助您增加封装。

Map<Integer, MyAnswer>

其中MyAnswer可以包含您要管理的数据的属性。在这里实现自己的课程为您提供了一个充满可能性的世界。