Java:嵌套Hashmap问题

时间:2013-04-26 22:07:48

标签: java list map linked-list hashmap

我有一个嵌套的LinkedHashMap,如下所示:

LinkedHashMap<String,LinkedHashMap<String,LinkedList<Long>>> map = new...

问题是每个外部地图只添加了1个内部地图,而我期待2.我认为问题是我如何构建我的地图,并用第二个覆盖第一个内部地图。 (为了简要概括我的程序,我将每只手映射到每个手指上。映射结构需要Finger={Right_Hand=[],Left_Hand=[],反之亦然。)

构造函数:

Set<String> handNames = new HashSet<String>(Arrays.asList("Left","Right");
Set<String> fingerNames = new HashSet<String>(Arrays.asList("Pinky","Ring","Middle","Index","Thumb");
LinkedHashMap<String, LinkedHashMap<String,LinkedList<Long>>> fingerHandMap = new LinkedHashMap<String, LinkedHashMap<String,LinkedList<Long>>>();

createNestedMap() {
    for (String finger : fingerNames)   
        for (String hand : handNames) {
            LinkedHashMap<String, LinkedList<Long>> handMap = new LinkedHashMap<String, LinkedList<Long>>();
            handMap.put(hand, new LinkedList<Long>());
            fingerHandMap.put(finger, handMap);
        }
}

当我打印出地图时,它看起来像这样:
{Ring={Left=[]}, Pinky={Left=[]}, Thumb={Left=[]}, Middle={Left=[]}, Index={Left=[]}}

我如何创建独特的LinkedLists,以使地图看起来像:
{Ring={Right=[], Left=[]}, Pinky={Right=[], Left=[]}, Thumb={Right=[], Left=[]}, Middle={Right=[], Left=[]}, Index={Right=[], Left=[]}}

谢谢!

1 个答案:

答案 0 :(得分:1)

我打算写一下你目前在伪代码中所做的事情,所以希望你能看到你做错了什么:

create a new finger hand map
for each finger:
    for each hand:
        create a new hand map
        put an entry mapping the hand to an empty list in the hand map
        put an entry mapping the finger to the hand map in the finger hand map

请记住,当您在地图中put键值条目时,它会使用相同的键替换任何现有条目。

如果您需要进一步澄清,请与我们联系。