똑같은 삽질은 2번 하지 말자
Map <String,Integer> Value 값의 기준으로 Key정렬 (오름차순, 내림차순) 본문
가끔 문제를 풀 경우, Map을 정렬하는 경우가 많다! Key에 관한 정렬은 TreeMap을 사용한다면
별도의 구현없이 정렬이 가능하다. 단, String, Integer 와 같은 기본형에만 해당된다.
만약 객체를 특정 인스턴스 변수 기준으로 정렬하고 싶다면, Comparable 을 이용한 정렬이 필요하다.
해당 객체를 생성하는 클래스에서 Comparable 인터페이스를 implements 하거나,
혹은 아래와 같은 방식으로 익명객체, 람다식을 활용할 수 있다. 하지만, 이번 예제에서는
Map의 Value에 대한 정렬을 해볼려고 한다. 정렬하는 방법을 익명객체와 람다식을 활용해서 구현했다.
public class ValueSortExample {
public static void main(String[] args) {
Map<string, string=""> map = new HashMap<>();
map.put("A", "29");
map.put("C", "19");
map.put("D", "31");
map.put("B", "15");
List<string> keySetList = new ArrayList<>(map.keySet());
// 내림차순 //
Collections.sort(keySetList, new Comparator<string>() {
@Override
public int compare(String o1, String o2) {
return map.get(o2).compareTo(map.get(o1));
}
});
for(String key : keySetList) {
System.out.println(String.format("Key : %s, Value : %s", key, map.get(key)));
}
System.out.println("-----------------------------------------------------------------");
// 오름차순 //
Collections.sort(keySetList, (o1, o2) -> (map.get(o1).compareTo(map.get(o2))));
for(String key : keySetList) {
System.out.println(String.format("Key : %s, Value : %s", key, map.get(key)));
}
}
}
'Java' 카테고리의 다른 글
Java 8 @FunctionalInterface(함수형 인터페이스), 람다 표현식 (0) | 2020.10.18 |
---|---|
Java Reflection API(리플렉션) (0) | 2020.09.21 |
JIT 컴파일러 이해 (Just-In-Time 컴파일러) (0) | 2020.08.25 |
Java jacoco(코드 커버리지 측정) 사용방법 (0) | 2020.08.23 |
JDK? JRE? JVM? 무슨 차이? JAVA 유료화? (0) | 2020.08.16 |
Comments