JAVA/기타

JAVA - ArrayList 간단하게 정렬(sort)하기(오름차순&내림차순)

99C0RN 2023. 3. 10. 12:43

개요

JAVA언어에서 자주 사용하는 컬렉션중 하나인 ArrayList 간단한 방법으로 정렬하기

1. Collections.sort()

2. List.sort()

3. Stream sorted()


1. Collections.sort()

Java의 Collections 클래스는 ArrayList를 포함한 모든 컬렉션을 정렬하는 데 사용할 수 있는 sort() 메서드를 제공합니다. 오름차순으로 정렬하려면 인수 없이 sort() 메서드를 호출
내림차순으로 정렬하려면 Collections 클래스의 reverseOrder() 메서드를 sort()의 인수로 추가하여 호출

 

List<Integer> numberList = new ArrayList<>(List.of(23, 1000, -1, 0, -55, 7));

Collections.sort(numberList); // 오름차순 정렬
// numberList = [-55, -1, 0, 7, 23, 1000]

Collections.sort(numberList, Collections.reverseOrder()); // 내림차순 정렬
// numberList = [1000, 23, 7, 0, -1, -55]

2. List.sort() - JAVA8 이상

Java 8부터 List 인터페이스는 목록을 정렬하는 데 사용할 수 있는 기본 sort() 메서드를 제공합니다.

오름차순으로 정렬하려면 sort() 메서드의 인수에 null을 추가하여 호출
내림차순으로 정렬하려면 Collections 클래스의 reverseOrder() 메서드를 sort()의 인수로 추가하여 호출

 

List<Integer> numberList = new ArrayList<>(List.of(23, 1000, -1, 0, -55, 7));

numberList.sort(null); // 오름차순 정렬
// numberList = [-55, -1, 0, 7, 23, 1000]

numberList.sort(Collections.reverseOrder()); // 내림차순 정렬
// numberList = [1000, 23, 7, 0, -1, -55]

 

 

* Collections.sort() vs List.sort()
2가지 정렬 방법은 사용법이 거의 동일하며, 단순 비교가 가능한 자료형을 정렬할때 소스 또한 간결합니다.
눈에 띄는 차이가 있다면, List.sort()의 경우 JAVA8 이후 버전부터 사용 가능한 것..

다음은 최근 화제인 ChatGPT를 통해 위 2가지 정렬 방법의 성능 차이에 대한 답변 내용 입니다.
(ChatGPT가 엄청나긴 하지만, 가끔 엉뚱한 답변도 받곤 합니다. 아래 내용도 참고용으로만 확인해주세요.)

 


Stream sorted()

Java 8은 모든 스트림을 정렬하는 데 사용할 수 있는 sorted() 메서드를 제공하는 Stream API를 도입했습니다. stream() 메서드를 사용하여 ArrayList를 스트림으로 변환한 다음 sorted()를 호출하여 스트림을 정렬할 수 있습니다.

오름차순으로 정렬하려면 sorted()를 호출

내림차순으로 정렬하려면 Collections 클래스의 reverseOrder() 메서드를 sorted()의 인수로 추가하여 호출

 

List<Integer> numberList = new ArrayList<>(List.of(23, 1000, -1, 0, -55, 7));

numberList = numberList.stream().sorted().collect(Collectors.toList()); // 오름차순 정렬
// numberList = [-55, -1, 0, 7, 23, 1000]

numberList = numberList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); // 내림차순 정렬
// numberList = [1000, 23, 7, 0, -1, -55]