public static void main(String[] args) {
int korean=80, mathmatics=30, society=67, english=90, history=56 ,science=77, art=80, training=46;
HashMap<String,Integer> map = new HashMap<String,Integer>();
ValueComparator bvc = new ValueComparator(map);
TreeMap<String,Integer> sorted_map = new TreeMap<String,Integer>(bvc);
int engineer = (mathmatics + science+ society + english)/4;
int munkwa = (korean + english + society + history)/4;
int talent = (korean + training + art + english)/4;
map.put("engineer",engineer);
map.put("munkwa",munkwa);
map.put("talent",talent);
System.out.println("unsorted map: "+map);
sorted_map.putAll(map);
System.out.println("results: "+sorted_map);
}
}
class ValueComparator implements Comparator<String> {
Map<String, Integer> base;
public ValueComparator(Map<String, Integer> base) {
this.base = base;
}
// Note: this comparator imposes orderings that are inconsistent with equals.
public int compare(String a, String b) {
if (base.get(a) >= base.get(b)) {
return -1;
} else {
return 1;
} // returning 0 would merge keys
}
결과
unsorted map: {talent=74, engineer=66, munkwa=73}
results: {talent=74, munkwa=73, engineer=66}
제가 궁금한건
map.put("engineer",engineer);
map.put("munkwa",munkwa);
map.put("talent",talent);
이 부분입니다.
키값 부분인데요 . 위 소스는 키값을 직접 지정해준건데 그렇게 안하고 자동으로 집어넣게 해주려면 어떻게 하는게 좋을까요?
engineer의 평균은 engineer라고 키값이 자동으로 판단해서 들어가게 해주고 싶습니다.
아 그리고 정렬은 키값으로 한다고 헀는데 여기서는 벨류값으로 정렬이 된 이유도 궁금하구요