자바 List<Map<String, Object>> 정렬
자바 List 안에 데이터(래퍼, String)가 아닌 객체 일때 정렬하는 방법
즉 List<String> 또는 List<Integer> 이 아닌 List<Map<String, Object>>을 정렬
(키값이 아닌, 데이터를 이용한 정렬)
// Map<String, Object> 객체 4개 생성
Map<String, Object> mapData1 = new HashMap<>();
mapData1.put("name", "데이터 1");
mapData1.put("seq", 1);
Map<String, Object> mapData2 = new HashMap<>();
mapData2.put("name", "데이터 2");
mapData2.put("seq", 2);
Map<String, Object> mapData3 = new HashMap<>();
mapData3.put("name", "데이터 3");
mapData3.put("seq", 3);
Map<String, Object> mapData4 = new HashMap<>();
mapData4.put("name", "데이터 4");
mapData4.put("seq", 4);
// List 에 담음
List<Map<String,Object>> list = new ArrayList<>();
//넣는 순서 반대로해서 삽입한 점 주목
list.add(mapData4);
list.add(mapData3);
list.add(mapData2);
list.add(mapData1);
오름차순으로 정렬하고 싶을 떄
//오름 차순으로 정렬하기
Collections.sort(list, new Comparator<Object>() {
// Comparable 인터페이스를 구현하여 전달
@Override
public int compare(Object s1, Object s2) {
return (Integer)((Map<String,Object>)s1).get("seq") - (Integer)((Map<String,Object>)s2).get("seq");
}
});
System.out.println("============오름 차순============");
for (Map<String, Object> map : list) {
System.out.println("name : " + map.get("name"));
}
내림차순으로 정렬하고 싶을 때
//내림 차순으로 정렬하기
Collections.sort(list, new Comparator<Object>() {
@Override
public int compare(Object s1, Object s2) {
return (Integer)((Map<String,Object>)s2).get("seq") - (Integer)((Map<String,Object>)s1).get("seq");
}
});
System.out.println("============내림 차순============");
for (Map<String, Object> map : list) {
System.out.println("name : " + map.get("name"));
}
결과
'개발 > JAVA' 카테고리의 다른 글
자바 배열의 일부분을 뒤집고 싶을 때 (0) | 2021.03.27 |
---|---|
자바 int[] 을 Integer[] 으로 배열 변경하기 (1.8) / int to integer array (0) | 2021.03.21 |
자바 1.8 - 메서드 참조란? 세미콜론 두개란? (::) (4) | 2021.03.18 |
자바 (Java) 제네릭(Generic) 클래스에서 [Type parameter 'T' cannot be instantiated directly] - 비전공개발자 (0) | 2021.03.11 |
Unhandled exception type Exception (0) | 2020.11.22 |
댓글
이 글 공유하기
다른 글
-
자바 int[] 을 Integer[] 으로 배열 변경하기 (1.8) / int to integer array
자바 int[] 을 Integer[] 으로 배열 변경하기 (1.8) / int to integer array
2021.03.21 -
자바 1.8 - 메서드 참조란? 세미콜론 두개란? (::)
자바 1.8 - 메서드 참조란? 세미콜론 두개란? (::)
2021.03.18 -
자바 (Java) 제네릭(Generic) 클래스에서 [Type parameter 'T' cannot be instantiated directly] - 비전공개발자
자바 (Java) 제네릭(Generic) 클래스에서 [Type parameter 'T' cannot be instantiated directly] - 비전공개발자
2021.03.11 -
Unhandled exception type Exception
Unhandled exception type Exception
2020.11.22