른록노트
[Java] HashMap 값으로 정렬하는 방법 본문
참고사이트
[JAVA] Map에서 데이터를 값(Value)기준으로 정렬방법 (오름차순, 내림차순)
소스코드
간단하게 바로 사용하는 방법
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Iterator;
public class ArraySort {
public static void main(String[] args) {
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("A", 5);
hashMap.put("B", 1);
hashMap.put("C", 2);
hashMap.put("D", 4);
hashMap.put("E", 3);
List<String> listKeySet = new ArrayList<>(hashMap.keySet());
// 오름차순
Collections.sort(listKeySet, (value1, value2) -> (hashMap.get(value1).compareTo(hashMap.get(value2))));
for(String key : listKeySet) {
System.out.println("key : " + key + " , " + "value : " + hashMap.get(key));
}
Iterator iter = listKeySet.iterator();
while(iter.hasNext()){
String key = (String) iter.next();
System.out.println("key : " + key + " , " + "value : " + hashMap.get(key));
}
System.out.println("------------------------");
// 내림차순
Collections.sort(listKeySet, (value1, value2) -> (hashMap.get(value2).compareTo(hashMap.get(value1))));
for(String key : listKeySet) {
System.out.println("key : " + key + " , " + "value : " + hashMap.get(key));
}
}
}
함수로 만들어서 사용하는 방법
private ArrayList sortByValue(final Map map, String order) {
ArrayList<Object> keyList = new ArrayList();
keyList.addAll(map.keySet());
Collections.sort(keyList, new Comparator() {
public int compare(Object o1, Object o2) {
Object v1 = null;
Object v2 = null;
if("asc".equals(order)) {
v1 = map.get(o1);
v2 = map.get(o2);
}else if("desc".equals(order)) {
v1 = map.get(o2);
v2 = map.get(o1);
}
return ((Comparable) v1).compareTo(v2);
}
});
return keyList;
}
private ArrayList sortByValue(final Map map, String order) {
ArrayList<Object> keyList = new ArrayList();
keyList.addAll(map.keySet());
Collections.sort(keyList, (o1,o2) -> {
Object v1 = null;
Object v2 = null;
if("asc".equals(order)) {
v1 = map.get(o1);
v2 = map.get(o2);
}else if("desc".equals(order)) {
v1 = map.get(o2);
v2 = map.get(o1);
}
return ((Comparable) v1).compareTo(v2);
});
return keyList;
}
반응형
Comments