본문 바로가기

Backend-Programming

[Java] List Map<String,Object> 정렬하기

 초기 데이터

정렬하기 예제를 시행하기 위한 초기 데이터입니다. 

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); // 내림차순
	}
			
});

결과 확인