【发布时间】:2010-10-24 14:53:09
【问题描述】:
我已经定义了一个 HashMap,它使用双类型键和另一个 HashMap 作为值,如图所示
HashMap<Double, HashMap<Double, String>> HM1 = new HashMap<Double, HashMap<Double, String>>();
现在,对于这个 HashMap 的每个条目,我都有一个对不同 HashMap 的引用;其名称派生自此 HashMap 中该条目的键值。例如: 如果我在HM1中的key值为8,那么在“Alpha8”中要引用的HashMap的名称。如果 HM1 中的键值为 6,则在“Alpha6”中要引用的 HashMap 的名称。所以我将这些添加到 HashMap HM1 的语法是 HM1.put(8, Alpha8);和 HM1.put(6,Alpha6);
我的问题:
我从文本文件中读取的键值是预定义的。因此,我打开文件,编写一个扫描器对象来选择每个值并将其放入一个双精度类型变量keyvalue。然而,为了得到这个键的值,我定义了一个字符串 s1 = "Alpha"+keyvalue.toString();
我的主要问题是如何在我的 put 函数中传递这个字符串。因为如果我说 HM1.put(keyvalue, s1);它相当于传递一个双键和一个字符串值,而不是双键和对另一个 HashMap 的引用。对于原始数据类型,您可能可以包装,但对于 HashMap 引用,我不知道该怎么做。
【问题讨论】:
-
我不明白你的地图为什么以及如何有名字。我想HM1的类型是
HashMap<Double, Map>? -
如果你只在其中输入一个值,为什么还要使用第二层哈希图?
-
我认为你的格式搞砸了——你的意思是
HashMap<Double, HashMap<String, Integer>> HM1 = new HashMap<Double, HashMap<String, Integer>>()? (顺便说一下,我只是将String和Integer编成内部哈希表的键和值类型,因为您的文本没有说明它们是什么。) -
1.您可以使用 Double 作为哈希的键。您可以关闭“alpha”部分。 2. 因为如果我说 HM1.put(keyvalue, s1);... 我不明白这应该做什么。我希望
HM1.put(Double d, Map<String,String>)或类似的。发布更多代码! -
所以“哈希图的名称”是指引用哈希图的变量的名称?