[Java] ArrayList 정렬하기 (오름차순, 내림차순, 사용자 정의 정렬, 람다)

이준영·2023년 8월 15일
1

🟫 Java

목록 보기
3/21
post-thumbnail

Java ArrayList 정렬하기

  • 배열 정렬방법과 ArrayList의 정렬 방법은 자바에서 조금 다릅니다. 둘을 확실히 구분해서 이해하기 위해 따로 정리하려 합니다.
  • ArrayList의 정렬 방법중 두가지를 적어보려 합니다.
    • Collections.sort(arr)
    • arr.sort()

Collections.sort()

Collections.sort(arr)

ArrayList를 오름차순으로 정렬합니다.

Collections.sort(arr, Collections.reverseOrder())

2번째 인자로 내림차순 정렬을 나타내는 Comparator.reverseOrder()를 전달해서, ArrayList를 내림차순으로 정렬할 수 있습니다.



// ArrayList 준비
ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(5,1,4,2,3));
System.out.println(arr); // [5, 1, 4, 2, 3]
 
 // 오름차순으로 정렬
 Collections.sort(arr);
 System.out.println(arr);  // [1, 2, 3, 4, 5]

 // 내림차순으로 정렬
 Collections.sort(arr, Collections.reverseOrder());
 System.out.println(arr);  // [5, 4, 3, 2, 1]
        


List.sort()

ArrayList 인스턴스 자체에 sort()를 사용해서 정렬도 가능합니다.

// ArrayList 준비
ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(5,3,1,4,2));
System.out.println(arr); // [5, 3, 1, 4, 2]

// 오름차순으로 정렬
arr.sort(Comparator.naturalOrder());
System.out.println(arr); // [1, 2, 3, 4, 5]

// 내림차순으로 정렬
arr.sort(Comparator.reverseOrder());
System.out.println(arr); // [5, 4, 3, 2, 1]

이 방법의 경우 Collections와 다르게 인자로 Comparator 를 전달해야 합니다.

또한 Comparator 를 직접 생성하여 사용자가 원하는 기준으로 정렬도 가능합니다.


// 오름차순으로 정렬
arr.sort(new Comparator<Integer>() {
	@Override
	public int compare(Integer a, Integer b) {
		return a - b;
	}
});
System.out.println(arr); // [1, 2, 3, 4, 5]

람다식을 이용한 정렬

// 오름차순으로 정렬
arr.sort((a, b) ->
	a - b
);

// 내림차순으로 정렬
arr.sort((a, b) ->
	b - a
);

Java 8 이상 버전에서는 복잡한 Comparator를 일일이 지정하는 대신 람다 표현식으로 간단하게 대체할 수 있습니다.

profile
작은 걸음이라도 꾸준히

0개의 댓글