2013-12-15 33 views
0

比方說,我有一張地圖和一個列表。我怎樣才能把更多的列表爲不同的密鑰?我知道這個清單是通過一個參考文獻傳遞的,但是最接近這個文件的方法是什麼?如何爲Map創建更多的相同列表實例?

Map<Integer, List<Integer>> moves = new HashMap<Integer,List<Integer>>(); 
    List<Integer> values = new LinkedList<Integer>(); 

    //Populate the map of moves to use it later for equation verification 
    values.add(6);values.add(9); 
    moves.put(0, values); 
    values.clear(); 
    moves.put(1, values); 
    values.add(3); 
    moves.put(2,values); 
    values.clear(); 
    values.add(2);values.add(5); 
    moves.put(3, values); 
    values.clear(); 
    moves.put(4, values); 
    values.add(3); 
    moves.put(5,values); 
    values.clear(); 
    values.add(0);values.add(9); 
    moves.put(6,values); 
    values.clear(); 
    moves.put(7, values); 
    moves.put(8, values); 
    values.add(0);values.add(6); 
    moves.put(9, values); 
+1

@AndrewThompson我不明白的xD你的意思 – nachokk

+0

@nachokk只有當我讀我寫的,被你提示,我認爲*「到底爲什麼我寫的那是什麼呢?什麼完全加載廢話!「*(而廢話我的意思是無意義的,而不僅僅是錯誤。)對所有人,對於噪音道歉。 –

回答

2

您創建了ArrayList的新實例,其中包含您的值。

moves.put(0, new ArrayList<Integer>(values)); 

這樣,你就不需要將values基準每次關聯到一個新的對象。

+0

謝謝你的快速回答! –

+0

@TurbutAlin順便說一句,我建議你使用'ArrayList'而不是'LinkedList'。我從反射寫了'ArrayList'。 – GGrec

+0

爲什麼使用ArrayList而不是LinkedList?由於LinkedList使用的內存? –

1

您必須創建一個新對象。如果沒有,則將所有鍵中的相同實例放入同一個實例中,並且當您從映射中檢索其值時,所有鍵都將具有相同的實例。

Map<Integer, List<Integer>> moves = new HashMap<Integer,List<Integer>>(); 
List<Integer> values = new LinkedList<Integer>(); 

//Populate the map of moves to use it later for equation verification 
values.add(6);values.add(9); 
moves.put(0, values); 
values = new LinkedList<Integer>(); 
values.add(8); 
moves.put(1, values); 
+0

謝謝!訣竅 –

相關問題