몇 번이나 물어 보았지만 이해를 돕습니다.지도별로 정렬, 설명이 필요
당신은 값
Map<String, Integer> m = new HashMap<String, Integer>();
m.put("a", 1);
m.put("b", 13);
m.put("c", 22);
m.put("d", 2);
으로 분류 할 필요지도 당신은 당신이 비교기 클래스
public MapComparator(Map<String, Integer> m) {
this.m = m;
}
@Override
public int compare(String a, String b) {
int x = m.get(a);
int y = m.get(b);
if (x > y)
return x;
if (y > x)
return y;
return 0;
}
이 코드가
public static List<String> sortByValue(final Map<String, Integer> unsortedMap) {
List<String> sortedKeys = new ArrayList<String>();
sortedKeys.addAll(unsortedMap.keySet());
Collections.sort(sortedKeys, new MapComparator(unsortedMap));
return sortedKeys;
}
을 일어날 수 있도록하는 방법을 호출해야, 분명히 결점이있다. 이유를 이해하도록 도와주세요.
루이, 이것은 안타깝게도 작동하지 않습니다. 결과는 여전히 정렬되지 않은 것으로 나타납니다 – JAM
원본지도에없는 값을 사용하면 편집에 문제가있는 것이 아니기 때문에'(Integer) null'을 언 박싱 할 때'NullPointerException'이 발생합니다. –
@JAM, 업데이트 된 코드를 게시 할 수 있습니까? 이것은 그것이 작동 해야하는 것처럼 보입니다. –