我有一个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,欢迎您的帮助。
答案 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 Javadoc和List Javadoc。