产生多个结果的关键

Sgt*_*tud 3 java hash

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

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

因此,如果你键入test.getKey(1),你可以获得{"hello","this","is","a","test"}.

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

Ted*_*opp 5

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

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

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

  • @Samir - 当然,这取决于所需的语义.当我使用Set时,List可能确实更适合OP的应用程序.如果值的顺序很重要,那么List将是正确的类型.如果订单不重要但多重性很重要,那么Multiset可能更合适.如果无论是顺序还是多重值都不重要(一个非常常见的情况),那么Set就是最佳匹配.Guava Multimap使用Collection,具有用于更具体的值集合类型的子接口. (2认同)