2014-04-18 57 views
-1

我有一個TreeMap,用於鍵Integer和值Coords(int x,int y)。
我想獲得與特定鍵相關的所有值(我的座標)。
對於爲例:Java如何使用TreeMap

key = 1, coords = [0, 0] 
key = 1, coords = [0, 1] 
key = 2, coords = [1, 0] 
key = 3, coords = [1, 1] 

foreach myMap.getKeys() as key 
do  
    myMap.getValuesFrom(key) 
    store it in a new list 
end do 

我真的不知道如何使用地圖,你的幫助是值得歡迎的。

+0

這對我來說不像Java。 –

+0

這不是java,只是一個算法 – melkir

+0

你真的只是要求教程嗎? – csmckelvey

回答

2

第一點 - Map不能有與同一個鍵關聯的兩個不同的值。如果你真的需要做到這一點,你可以製作一張列表,像這樣:

Map<Integer, List<Integer>> map = new TreeMap<Integer, List<Integer>>(); 

下面的代碼遍歷地圖的鑰匙,並把相關的值的列表:

Map<Integer, Integer> map = new TreeMap<Integer, Integer>(); 
List<Integer> list = new ArrayList<Integer>(); 
for (Integer key : map.keySet()) { 
    list.add(map.get(key)); 
} 

做同樣的事情比較正確的做法:

Map<Integer, Integer> map = new TreeMap<Integer, Integer>(); 
List<Integer> list = new ArrayList<Integer>(map.values()); 

如果你真的需要映射到相同的密鑰多個值,試試這個:

Map<Integer, List<Integer>> map = new TreeMap<Integer, List<Integer>>(); 

for (Map.Entry<Integer, List<Integer>> entry : map.entrySet()) { 
    System.out.println("Map values for key \"" + entry.getKey() + "\":"); 
    for (Integer value : entry.getValue() == null ? new ArrayList<Integer>() : entry.getValue()) { 
     System.out.print(value + " "); 
    } 
    System.out.println(); 
} 

該代碼只是將所有映射鍵及其值寫入System.out

欲瞭解更多信息,請嘗試閱讀Map JavadocList Javadoc

+0

謝謝!這是完美:) – melkir

+0

@melkir不客氣。不要忘記加註有用的答案,並選擇最合適的答案。 –

+0

看起來我沒有足夠的聲望做這個,也許我已經錯過了一些東西,對不起:( – melkir