티스토리 뷰
가끔 문제를 풀 경우, Map을 정렬하는 경우가 많다! Key에 관한 정렬은 TreeMap을 사용한다면 별도의 구현없이 정렬이 가능하다.
단, String, Integer 와 같은 기본형에만 해당된다. 만약 객체를 특정 인스턴스 변수 기준으로 정렬하고 싶다면, Comparable 을 이용한 정렬이 필요하다.
해당 객체를 생성하는 클래스에서 Comparable 인터페이스를 implements 하거나, 혹은 아래와 같은 방식으로 익명객체, 람다식을 활용할 수 있다.
하지만, 이번 예제에서는 Map의 Value에 대한 정렬을 해볼려고 한다. 정렬하는 방법을 익명객체와 람다식을 활용해서 구현했다.
package test; import java.util.*; public class ValueSortExample { public static void main(String[] args) { Mapmap = new HashMap<>(); map.put("A", "29"); map.put("C", "19"); map.put("D", "31"); map.put("B", "15"); List keySetList = new ArrayList<>(map.keySet()); // 내림차순 // Collections.sort(keySetList, new Comparator () { @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' 카테고리의 다른 글
람다와 스트림의 정의 (2) | 2018.11.14 |
---|---|
알고리즘 현황을 엑셀 파일로 생성해주는 프로그램 개발 (Java POI 를 이용해서 엑셀 파일 생성) (1) | 2018.11.06 |
멀티스레드 (0) | 2018.10.27 |
예외처리2 - 사용자 정의 예외 클래스 생성 (0) | 2018.10.04 |
예외처리1 - 오류와 예외 (0) | 2018.10.04 |