基于key对树图进行排序,其中key是可变的

sac*_*hin 9 java treemap

我想根据key是一个变量的键对树映射进行排序,因此排序应该基于变量值,我们如何实现这一点?我希望在构建的排序方法中使用rathar通过代码实现它,任何回复示例都有很大的帮助.

pmn*_*mnt 21

TreeMap(实现SortedMap)以正确的顺序自动存储密钥:

Map<Integer, String> map = new TreeMap<Integer, String>();
map.put(1, "one");
map.put(3, "three");
map.put(2, "two"); 
// prints one two three   
for(Integer key : map.keySet()) {
    System.out.println(map.get(key));
}
Run Code Online (Sandbox Code Playgroud)

作为Key-Type(在这种情况下Integer),您可以使用任何实现的类Comparable(或者您可以Comparator在创建时提供TreeMap)

编辑:好的,这是一个如何重新映射你的地图的建议.

Map<Integer, String> oldMap; // get oldMap from somewhere
// Prepare remapping
Map<Integer, String> newMap = new TreeMap<Integer, String>();
Map<Integer, Integer> keyMap = new HashMap<Integer, Integer>();
// Store a new key for each old key
keyMap.put(oldKey, newKey);
// fill the newMap
for(Integer oldKey : keyMap.keySet()) {
    newMap.put(keyMap.get(oldKey), oldMap.get(oldKey));
}
oldMap = newMap; // if needed
Run Code Online (Sandbox Code Playgroud)