[Java] HashMap Key(키)/Value(밸류) 기준 정렬
키(Key) 기준 정렬
HashMap을 Key로 정렬하기 위해서는 Arrays.sort 메소드를 사용한다.
Arrays.sort 사용하기 위해서 java.util.Arrays를 import 해줘야 한다.
// key 값 기준 정렬
HashMap<Integer, Integer> map = new HashMap<>();
map.put(6, 1);
map.put(1, 2);
map.put(4, 3);
map.put(10, 4);
map.put(7, 5);
Object[] mapKey = map.keySet().toArray();
Arrays.sort(mapKey);
System.out.println("오름차순 정렬");
for (Integer key : map.keySet()) {
System.out.println(key + " : " + map.get(key));
}
map 에 키를 6,1,4,10,7 순서로 데이터를 추가한다.
Object 클래스를 선언하고 mapKey에 key를 저장한다.
키만 추출한 Object 클래스인 변수 mapKey를 Arrays.sort 사용하여 정렬한다.
keySet()을 반복문 돌려 출력한다.
(결과)
오름차순 정렬
1 : 2
4 : 3
6 : 1
7 : 5
10 : 4
Value 기준 정렬
HashMap을 Value로 정렬하기 위해서는 compareTo를 사용한다.
// value 값 기준 정렬
HashMap<Integer, Integer> map2 = new HashMap<>();
map2.put(1, 5);
map2.put(2, 0);
map2.put(3, 3);
map2.put(4, 9);
map2.put(5, 6);
List<Map.Entry<Integer,Integer>> list = new ArrayList<Map.Entry<Integer,Integer>>(map2.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
return o1.getValue().compareTo(o2.getValue()); // 오름차순
// return o2.getValue().compareTo(o1.getValue()); // 내림차순
}
});
for(Map.Entry<Integer, Integer> entry : list){
System.out.println(entry.getKey()+" "+entry.getValue());
}
(결과)
오름차순 정렬
2 0
3 3
1 5
5 6
4 9
HashMap에 저장된 데이터 값을 Comparator 함수를 사용하여 정렬한다.
TreeMap 자동 정렬
TreeMap은 Key를 기준으로 자동 정렬한다.
// TreeMap 정렬
TreeMap<Integer, Integer> tree = new TreeMap<>();
tree.put(6, 1);
tree.put(1, 2);
tree.put(4, 3);
tree.put(10, 4);
tree.put(7, 5);
System.out.println("오름차순 정렬");
for (Integer key : tree.keySet()) {
System.out.println(key + " : " + tree.get(key));
}
(결과)
오름차순 정렬
1 : 2
4 : 3
6 : 1
7 : 5
10 : 4
https://ponyozzang.tistory.com/404
Author And Source
이 문제에 관하여([Java] HashMap Key(키)/Value(밸류) 기준 정렬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimmjieun/Java-HashMap-Key키Value밸류-기준-정렬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)