Collections.sort() 메서드는 자바 ArrayList를 오름차순으로 정렬하며, Collections.reverse() 메서드는 ArrayList의 요소 순서를 뒤집습니다. 이 두 메서드를 사용하려면 java.util.Collections 패키지를 임포트해야 합니다.
자바에서 ArrayList 정렬하는 방법
자바로 개발하다 보면 ArrayList를 오름차순 또는 내림차순으로 정렬해야 하는 경우가 종종 있습니다. 예를 들어, 학생 명단을 가나다순(알파벳순)으로 정렬해야 한다고 가정해 봅시다.
바로 이런 상황에서 Collections.sort()와 Collections.reverse() 메서드가 큰 도움이 됩니다.
Collections.sort() 메서드는 ArrayList의 요소를 오름차순으로 정렬하는 데 사용되고, Collections.reverse() 메서드는 리스트의 요소 순서를 반대로 뒤집는 데 사용됩니다.
이 글에서는 예제 코드와 함께 자바에서 ArrayList를 정렬하는 방법을 살펴보겠습니다. ArrayList의 기본 개념부터 sort()와 reverse() 메서드의 문법까지 차근차근 알아보겠습니다.
자바 ArrayList란?
자바의 ArrayList 클래스는 크기가 가변적인(resizable) 배열을 만들 수 있게 해주는 클래스입니다. ArrayList는 자바에서 리스트를 생성할 때 사용되는 List 인터페이스의 구현체이며, 덕분에 데이터를 조작하고 조회하는 다양한 List 메서드들을 그대로 활용할 수 있습니다.
ArrayList 오름차순 정렬: sort() 메서드
자바의 Collections 패키지에는 컬렉션의 내용을 조작할 수 있는 여러 메서드가 포함되어 있습니다. 자바에서 ArrayList는 컬렉션(collection)의 한 종류에 해당하는 클래스이므로, Collections 패키지의 기능을 ArrayList에 그대로 적용할 수 있습니다.
Collections 패키지에는 sort()라는 메서드가 있는데, 이 메서드는 컬렉션을 오름차순으로 정렬하는 데 사용됩니다.
sort() 메서드를 사용하기 전에 먼저 Collections 패키지를 임포트해야 합니다. 다음 코드로 임포트할 수 있습니다:
import java.util.Collections;
Collections 패키지를 임포트했다면 이제 sort()를 사용할 수 있습니다. sort() 메서드의 문법은 다음과 같습니다:
Collections.sort(listName);
sort() 메서드는 하나의 매개변수를 받습니다. 바로 정렬하려는 리스트의 이름입니다. 이 메서드는 리스트를 자동으로 오름차순으로 정렬해 줍니다.
sort() 메서드 예제
초등학교 한 반의 학생 이름 목록이 있고, 이 이름들을 알파벳순으로 정렬하고 싶다고 가정해 봅시다. 다음은 정렬되지 않은 목록을 정렬하는 자바 프로그램입니다:
import java.util.ArrayList;
import java.util.Collections;
class Main {
public static void main(String[] args) {
ArrayList<String> students = new ArrayList<>();
students.add("Lindsay");
students.add("Peter");
students.add("Lucas");
students.add("Athena");
System.out.println("Student list: " + students);
Collections.sort(students);
System.out.println("Sorted student list: " + students);
}
}
위 코드를 실행하면 다음과 같은 결과가 출력됩니다:
Student list: [Peter, Lindsay, Lucas, Athena] Sorted student list: [Athena, Lindsay, Lucas, Peter]
코드를 하나씩 살펴보겠습니다. 먼저 코드 전반에서 사용할 ArrayList와 Collections 패키지를 임포트합니다. 그다음 메인 프로그램의 코드를 담고 있는 Main이라는 클래스를 선언합니다.
메인 프로그램에서는 다음 단계가 순서대로 실행됩니다:
- students라는 자바 변수를 선언합니다.
- 학생 이름들을 ArrayList에 추가합니다.
- "Student list:"라는 메시지와 함께 정렬되지 않은 학생 이름 목록을 콘솔에 출력합니다.
- Collections.sort()가 자연 순서(natural ordering)에 따라 리스트를 정렬합니다.
- "Sorted student list:"라는 메시지와 함께 새롭게 정렬된 학생 이름 목록을 콘솔에 출력합니다.
Collections.sort()는 기존 리스트의 순서를 직접 변경한다는 점에 유의하세요. 위 예제에서 Collections.sort() 메서드를 실행하면 기존 학생 이름 목록의 순서가 그대로 변경되었으며, 별도의 새로운 정렬된 리스트를 생성하지 않았습니다.
ArrayList 내림차순 정렬: reverse() 메서드
Collections.reverse() 메서드는 ArrayList의 요소 순서를 반대로 뒤집습니다. reverse() 메서드 역시 하나의 매개변수를 받는데, 바로 순서를 뒤집으려는 리스트입니다.
reverse() 메서드의 문법은 다음과 같습니다:
Collections.reverse(list)
여기서 "list"는 순서를 뒤집으려는 ArrayList를 의미합니다.
reverse() 메서드는 ArrayList의 항목 순서를 단순히 뒤집기만 하기 때문에, 내림차순 정렬을 원한다면 먼저 리스트를 오름차순으로 정렬한 후 reverse()를 적용해야 합니다. 즉, Collections.sort()와 reverse() 메서드를 함께 사용하면 리스트를 내림차순으로 정렬할 수 있습니다.
reverse() 메서드 예제
앞서 만든 학생 이름 목록을 내림차순으로 정렬하고 싶다고 가정해 봅시다. 다음 코드로 이 작업을 수행할 수 있습니다:
import java.util.ArrayList;
import java.util.Collections;
class Main {
public static void main(String[] args) {
ArrayList<String> students = new ArrayList<>();
students.add("Lindsay");
students.add("Peter");
students.add("Lucas");
students.add("Athena");
System.out.println("Student list: " + students);
Collections.sort(students);
Collections.reverse(students);
System.out.println("Sorted student list: " + students);
}
}
위 코드를 실행하면 다음과 같은 결과가 출력됩니다:
Student list: [Lindsay, Peter, Lucas, Athena] Sorted student list: [Peter, Lucas, Lindsay, Athena]
먼저 Collections.sort()로 학생 목록을 알파벳순(오름차순)으로 정렬합니다. 그런 다음 Collections.reverse()를 사용해 리스트의 항목 순서를 뒤집으면 역알파벳순(내림차순)으로 정렬된 결과를 얻을 수 있습니다.
마무리
자바의 Collections.sort() 메서드는 ArrayList를 오름차순으로 정렬하고, Collections.reverse() 메서드는 ArrayList의 항목 순서를 뒤집습니다. 두 메서드를 함께 사용하면 ArrayList의 항목을 내림차순으로도 정렬할 수 있습니다.
자바에서 ArrayList를 활용하는 방법은 아직 더 많이 남아 있습니다. 더 깊이 학습하고 싶다면 다음 주제들도 확인해 보세요:
- ArrayList를 배열(Array)로 변환하는 방법
- ArrayList 초기화 방법
- ArrayList 정렬 방법
자바 코딩을 더 체계적으로 배우고 싶다면 자바 학습 가이드를 참고해 보세요.