이번 포스팅에서는 배열이나 컬렉션(List계열만)에 저장된 객체(데이타) 정렬하는 법을 알아보자
우선 배열과 컬렉션(List계열만)에서의 각각의 오름차순과 내림차순을 사용하는 법은 아래와 같다.
주의사항은 배열의 타입 혹은 List계열 컬렉션에 저장된 객체의 타입은 반드시 Comparable인터페이스를 상속받고 compare()를 오버라이딩 해야한다는 것이다! 참조형클래스들은 기본적으로 Comparable인터페이스를 상속받고있다.
예제를 직접보는것이 이해하는데 훨씬 도움이 될 것이다.
먼저 배열 예제부터 보자.
▲ String타입의 배열을 생성하고 초기화도 하였다.
방법1)은 아주 심플한 방법이다.
방법2)는 현재 String타입의 배열이기 때문에 Comparable인터페이스를 자동상속 받은 상태이다. 이후 compare()메소드를 오버라이딩까지 해주어야 비로소 사용할 수 있는 방법이다.
여기서 첫번째 매개변수.compareTo(두번째 매개변수)의 형태를 취하고 있는데 위와 같은 형태는 오름차순을 표현하는 것이다. 만일 int형배열이었다면 o1-o2의 형태가 오름차순을 표현하는 형식이었을 것이다.
▲ 오름차순으로 결과값이 출력된다.
▲배열의 내림차순이다.
방법1)에서는 Collections.reverseOrder()를 사용하면된다.
방법2)에서는 역시나 compare()오버라이딩 까지 한 후 오름차순과는 반대로 o2가먼저오고 o1이 뒤에 오는 형식으로 내림차순을 표현한다. 만약 int형 배열이었다면 o2-o1의 형태였을 것이다.
▲ 배열의 내림차순 출력결과
Arrays클래스에는 형변환을 할 수 있는 유용한 메소드들이 있다. 몇가지만 소개해보겠다
▲ 각각의 메소드들은 현업에서도 자주 사용하는 메소드이므로 잘 익혀두면 도움이 될 것이다.
list컬렉션을 배열로변환하는 메소드인 toArray()는 반환타입이 Object이다.
이번에는 Collection클래스로 정렬해보자
▲ 컬렉션은 오름차순, 내림차순 모두 Collections로 접근한다. 인자로 List컬렉션을 받는다는 것 제외하고는 배열과 구조는 동일하다. Integer역시 참조형이므로 Comparable인터페이스가 기본으로 상속받고 있다.
역시나 오름차순은 첫번째 인자가 -> 두번째 인자순으로 표현된다.
▲ 내림차순 또한 동일하다.
'Java' 카테고리의 다른 글
[Java]Map계열 - Hashtable (0) | 2022.03.19 |
---|---|
[Java]Map계열 - HashMap (0) | 2022.03.18 |
[Java]Collection - List계열(Vector) (0) | 2022.03.17 |
[Java]Collection - List계열(ArrayList) (0) | 2022.03.17 |
[Java]Collection - Set계열(HashSet) (0) | 2022.03.16 |