일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- UnBuffered channel
- 대규모 시스템 설계
- Infra
- golang
- 윈도우키보드
- Buffered channel
- 오블완
- body size
- 컴포지트패턴
- Logrus
- m4 pro
- 배포 프로세스
- Intellij
- notification system
- 사설 ip
- apollo router
- Kubernetes
- 티스토리챌린지
- GoF 디자인패턴
- AWS
- http 413
- System Design
- elasticsearch
- intellij ide
- goland
- gitops
- 배포 파이프라인
- 디자인패턴
- go
- GoF
- Today
- Total
Fall in IT.
Map 객체, key 또는 value를 사용한 정렬 본문
안녕하세요. 오늘은 자바에서 Map객체를 정렬하는 방법에 대하여 알아보겠습니다.
Map은 기본적으로 key, value로 구성되어 있습니다. key에 의한 정렬과 value에 의한 정렬 두가지를 알아보도록 하겠습니다.
Key에 의한 정렬
- TreeMap을 사용한다.
- TreeMap 은 중복을 허용하지 않고 Key 값을 기준으로 정렬을 해주는 자료구조 입니다.
(HashMap 은 내부 hash 값에 따라 키순서가 정해지므로 특정 규칙없이 출력됩니다.) - 역 정렬 또한 가능합니다.
Sample code
//메인메소드에서 구현
Map<Double,Integer> hashMap = new HashMap<Double,Integer>();
hashMap.put(1.1,99);
hashMap.put(2.2,70);
hashMap.put(13.3,89);
hashMap.put(7.7,79);
hashMap.put(10.1,99);
TreeMap<Double,Integer> tm = new TreeMap<Double,Integer>(hashMap);
Iterator<Double> iteratorKey = tm.keySet( ).iterator( ); //키값 오름차순 정렬(기본)
while(iteratorKey.hasNext()) {
Double key = iteratorKey.next();
System.out.println(key+","+tm.get(key));
}
결과 출력
Value에 의한 정렬
comparator을 직접 구현하여 정렬 할 수 있습니다.
아래 코드는 key 목록을 리스트에 담고, 해당 리스트를 value를 기준으로 정렬하는 방식으로 구현 되었습니다.
Sample code
//메인메소드에서 구현
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("a",3);
map.put("b",12);
map.put("c",54);
map.put("d",51);
map.put("e",8);
System.out.println("------------sort 전 -------------");
Iterator iterator = map.keySet().iterator();
while(iterator.hasNext {
String temp = (String) iterator.next();
System.out.println(temp + " = " + map.get(temp));
}
Iterator it = sortByValue(map).iterator();
System.out.println("------------sort 후 -------------");
while(it.hasNext()) {
String temp = (String) it.next();
System.out.println(temp + " = " + map.get(temp));
}
//별도의 스태틱 함수로 구현
public static List sortByValue(final Map map) {
List<String> list = new ArrayList();
list.addAll(map.keySet());
Collections.sort(list,new Comparator() {
public int compare(Object o1,Object o2) {
Object v1 = map.get(o1);
Object v2 = map.get(o2);
return ((Comparable) v2).compareTo(v1);
}
});
Collections.reverse(list); // 주석시 오름차순
return list;
}
결과 출력
모두 즐거운 코딩하세요~
'프로그래밍언어 > Java' 카테고리의 다른 글
싱글톤 패턴(Singleton Pattern) 사용하기 (4) | 2016.07.25 |
---|---|
자바 실행 에러 Exception in thread "main" java.lang.UnsupportedClassVersionError: com/chat/SyChatAppApplication : Unsupported major.minor version 52.0 (0) | 2016.07.07 |
JAVA 디렉터리 또는 파일생성 (0) | 2016.03.10 |
static 잘 활용하기 (0) | 2016.03.08 |
StringBuffer와 StringBuilder의 차이점 (0) | 2016.03.03 |