초기 데이터
정렬하기 예제를 시행하기 위한 초기 데이터입니다.
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("name", "apple");
map1.put("price", 1000);
Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("name", "orange");
map2.put("price", 500);
Map<String,Object> map3 = new HashMap<String,Object>();
map3.put("name", "banana");
map3.put("price", 2000);
list.add(map1);
list.add(map2);
list.add(map3);
System.out.println(list);
정렬하기 위해 Collections.sort()를 사용하고, 정렬하는 규칙을 정의하기 위해서 Comparator 인터페이스를 파라미터로 사용합니다.
1. 숫자 정렬 - 오름차순(price)
Collections.sort(list, new Comparator<Map<String,Object>>() {
@Override
public int compare(Map<String,Object> o1, Map<String,Object> o2) {
int first = Integer.parseInt(o1.get("price").toString());
int second = Integer.parseInt(o2.get("price").toString());
return second > first ? -1 : second< first ? 1 : 0; // 오름차순 정렬
}
});
결과 확인
2. 숫자 정렬 - 내림차순
Collections.sort(list, new Comparator<Map<String,Object>>() {
@Override
public int compare(Map<String,Object> o1, Map<String,Object> o2) {
int first = Integer.parseInt(o1.get("price").toString());
int second = Integer.parseInt(o2.get("price").toString());
return first > second ? -1 : first< second ? 1 : 0; // 내림차순 정렬
}
});
결과 확인
3. 문자열 정렬 - 오름차순(name)
Collections.sort(list, new Comparator<Map<String,Object>>() {
@Override
public int compare(Map<String,Object> o1, Map<String,Object> o2) {
String first = o1.get("name").toString();
String second = o2.get("name").toString();
return first.compareTo(second); // 오름차순
}
});
결과 확인
4. 문자열 정렬 - 내림차순
Collections.sort(list, new Comparator<Map<String,Object>>() {
@Override
public int compare(Map<String,Object> o1, Map<String,Object> o2) {
String first = o1.get("name").toString();
String second = o2.get("name").toString();
return second.compareTo(first); // 내림차순
}
});
결과 확인