Java如何使用TreeMap

时间:2014-04-18 23:29:15

标签: java map

我有一个TreeMap,其中key为Integer,值为Coords(int x,int y) 我想获得与特定键相关的所有值(我的坐标) 例如:

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  

我真的不知道如何使用Map,欢迎您的帮助。

1 个答案:

答案 0 :(得分: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