簡體   English   中英

Java:嵌套Hashmap問題

[英]Java: Issue with Nested 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=[]}}

謝謝!

我將用psuedocode編寫您當前正在做的事情,因此希望您可以看到您做錯了什么:

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鍵值條目放入地圖中時,它將用相同的鍵替換任何現有條目。

讓我知道您是否需要進一步說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM