我对编程很陌生,所以如果这是一个愚蠢的问题,我很抱歉。我想知道是否有一种类型的数据可以返回(可能)每个键多个答案。例如:
TestType<int,String> test = new TestType<int,String>();
因此,如果您输入test.getKey(1),则可以获得{“hello”,“this”,“is”,“a”,“test”}。
基本上,是否有一种数据可以返回多个答案,有点像HashMap和List组合?
答案 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提供了一个关于如何使用Map
和List
自行创建多图的小示例,如下所示:
Map<String, List<String>> m = new HashMap<String, List<String>>();
您可以在Java Collections/Maps中查看示例。检查多图上的段落,例如代码
答案 4 :(得分:0)
阿米特走在正确的轨道上。您还可以为答案创建一个类。这可以帮助您增加封装。
Map<Integer, MyAnswer>
其中MyAnswer可以包含您要管理的数据的属性。在这里实现自己的课程为您提供了一个充满可能性的世界。