728x90
ArrayList and Collections.sort()
List는 Object 배열을 이용해서 데이터를 순차적으로 저장하는 컬렉션이다.
입력한 데이터의 순서가 유지되고, 데이터의 중복을 허용하는 특징을 가지고 있다.
구현 클래스 : ArrayList, Vector
이런 특징을 가진 ArrayList 의 도움을 받아 Map을 정렬할 수 있다.
1. Key로 정렬
keySet을 ArrayList에 저장한다.
Collections.sort() 함수로 저장된 key를 정렬한다.
List<String> employeeByKey = new ArrayList<>(map.keySet());
Collections.sort(employeeByKey);
적용
public class UsingArrayList {
public static void main(String[] args) {
Map<String, Employee> map = new HashMap<>();
Employee employee1 = new Employee(1L, "Mher");
map.put(employee1.getName(), employee1);
Employee employee2 = new Employee(22L, "Annie");
map.put(employee2.getName(), employee2);
Employee employee3 = new Employee(8L, "John");
map.put(employee3.getName(), employee3);
Employee employee4 = new Employee(2L, "George");
map.put(employee4.getName(), employee4);
//Key로 정렬
List<String> employeeByKey = new ArrayList<>(map.keySet());
Collections.sort(employeeByKey);
for(String name : employeeByKey) {
System.out.println(name);
}
}
}
결과
Annie
George
John
Mher
2. Value로 정렬
value 값을 정렬할 때도 ArrayList를 활용할 수 있다.
이 때, Employee 클래스의 id를 기준으로 정렬한다.
ArrayList에 value값들을 저장한다.
Collections.sort() 함수로 저장된 value를 정렬한다.
List<Employee> employeeById = new ArrayList<>(map.values());
Collections.sort(employeeById);
※ Employee 클래스가 Comparable 인터페이스를 구현하기 때문에 이와 같은 정렬이 가능하다는 점을 꼭 기억하자.
만약, 클래스가 Comparable 인터페이스를 구현하지 않을 경우 Collections.sort() 함수를 호출하기 위한 비교장치를 comparator를 직접 작성해야 한다.
적용
public class UsingArrayList {
public static void main(String[] args) {
Map<String, Employee> map = new HashMap<>();
Employee employee1 = new Employee(1L, "Mher");
map.put(employee1.getName(), employee1);
Employee employee2 = new Employee(22L, "Annie");
map.put(employee2.getName(), employee2);
Employee employee3 = new Employee(8L, "John");
map.put(employee3.getName(), employee3);
Employee employee4 = new Employee(2L, "George");
map.put(employee4.getName(), employee4);
//value로 정렬
List<Employee> employeeById = new ArrayList<>(map.values());
Collections.sort(employeeById);
for(Employee emp : employeeById) {
System.out.println(emp.toString());
}
}
}
결과
Employee {id=1, name='Mher'}
Employee {id=2, name='George'}
Employee {id=8, name='John'}
Employee {id=22, name='Annie'}
id 값을 기준으로 오름차순 정렬된 내역을 확인할 수 있다.
728x90
'코딩테스트' 카테고리의 다른 글
Sort a HashMap in Java - (4) Using the Stream API (0) | 2021.03.18 |
---|---|
Sort a HashMap in Java - (3) TreeSet (0) | 2021.03.18 |
Sort a HashMap in Java - (1) TreeMap (0) | 2021.03.18 |
Sort a HashMap in Java - Sort Function 완성하기 (0) | 2021.03.18 |
[LeetCode] 860. Lemonade Change (2) | 2021.03.18 |