Java (자바)

[Java] 배열(Array) 정렬, ArrayList 정렬 / 오름차순, 내림차순 / 알파벳 순서대로

Oscar:) 2023. 12. 29. 09:02

 

배열 정렬하는 방법을 알아보자.

본인이 코딩 테스트 풀 때마다 매번 까먹어서 정리하는 글 아님

 

 


 

 

배열 (Array) 정렬

 

 

✅ Arrays.sort() 메서드

 

Arrays 클래스의 sort() 메서드를 사용할 수 있다.

인자값에 배열을 넣어주면 된다.

 

 

● 오름차순 정렬

int[] intArray;
Arrays.sort(intArray);

 

 

● 내림차순 정렬

Integer[] intArray;
Arrays.sort(intArray, Collections.reverseOrder());

 

내림차순의 경우, Wrapper 클래스를 사용해야 하고, (int → Integer)

Collections.reverseOrder()를 2번째 인자값에 작성한다.

 

 

위 메서드는 int, double, String 등

대부분의 타입에 적용할 수 있다.

 

 

ex)

// 배열 초기화
String[] strArray = {"d", "e", "a", "b", "c"};
Integer[] intArray = {3, 1, 5, 6, 2, 4, 7};
		
// 정렬 전 출력
System.out.println("strArray 정렬 전 : " + Arrays.toString(strArray));
System.out.println("intArray 정렬 전 : " + Arrays.toString(intArray) + "\n");
		
// 오름차순 정렬
Arrays.sort(strArray);
Arrays.sort(intArray);
		
// 오름차순 정렬 후 출력
System.out.println("strArray 오름차순 정렬 : " + Arrays.toString(strArray));
System.out.println("intArray 오름차순 정렬 : " + Arrays.toString(intArray) + "\n");
		
// 내림차순 정렬
Arrays.sort(strArray, Collections.reverseOrder());
Arrays.sort(intArray, Collections.reverseOrder());
		
// 내림차순 정렬 후 출력
System.out.println("strArray 내림차순 정렬 : " + Arrays.toString(strArray));
System.out.println("intArray 내림차순 정렬 : " + Arrays.toString(intArray) + "\n");

 

출력 결과)

 

 

●  알파벳의 경우, 오름차순 기준으로 대문자가 더 앞에 온다.

String[] strArray = {"c", "A", "a", "B", "b", "C"};
Arrays.sort(strArray);
System.out.println(Arrays.toString(strArray));

 

출력 결과)

 

 

●  한글도 된다.

String[] strArray = {"나", "라", "가", "다", "바", "마"};
Arrays.sort(strArray);
System.out.println(Arrays.toString(strArray));

 

출력 결과)

 

 


 

ArrayList 정렬

 

 

✅ Collections.sort() 메서드

 

Collections 클래스의 sort() 메서드를 사용한다.

인자값에 List를 넣어주면 된다.

 

 

ex)

// ArrayList 초기화 & 데이터 추가
ArrayList<String> list = new ArrayList<>();
list.add("d");
list.add("e");
list.add("a");
list.add("b");
list.add("c");
		
// 정렬 전 출력
System.out.println("정렬 전 : " + list + "\n");
		
// 오름차순 정렬
Collections.sort(list);

// 오름차순 정렬 후 출력
System.out.println("오름차순 정렬 : " + list + "\n");
		
// 내림차순 정렬
Collections.sort(list, Collections.reverseOrder());
		
// 내림차순 정렬 후 출력
System.out.println("내림차순 정렬 : " + list);

 

출력 결과)

 

 

● Collections.sort() / Arrays.sort()

 

Collections 클래스에 들어가보면 sort() 메서드를 확인할 수 있다.

 

 

Collections.class

 

 

그리고 저 연두색 sort() 메서드를 타고 들어가보면

List 클래스의 sort() 메서드를 확인할 수 있는데..

 

 

List.class

 

 

Collections.sort() 를 적용하는 List 객체는

결국 Object 배열로 변환되어 Arrays.sort() 적용되는 것을 확인할 수 있다.

 

근본적으로는 Collections.sort() == Arrays.sort() 라는 것을 확인할 수 있었다.

 

 


 

✅ List.sort() 메서드

 

List 객체에 sort() 메서드를 사용할 수도 있다.

인자값에는 아래 함수를 넣어주면 된다.

 

오름차순 : Comparator.naturalOrder()

내림차순 : Comparator.reverseOrder()

 

 

ex)

// ArrayList 초기화 & 데이터 추가
ArrayList<String> list = new ArrayList<>();
list.add("d");
list.add("e");
list.add("a");
list.add("b");
list.add("c");
		
// 정렬 전 출력
System.out.println("정렬 전 : " + list + "\n");
	
// 오름차순 정렬
list.sort(Comparator.naturalOrder());

// 오름차순 정렬 후 출력
System.out.println("오름차순 정렬 : " + list + "\n");
		
// 내림차순 정렬
list.sort(Comparator.reverseOrder());
		
// 내림차순 정렬 후 출력
System.out.println("내림차순 정렬 : " + list);

 

출력 결과)

 

 


 

✅ 반복문과 배열 사용하기

 

단순 작업으로 반복문과 배열을 사용하여 정렬할 수도 있다.

시퀀스는 다음과 같다.

 

List → (for문)  → Array → Arrays.sort() → (for문) → List

 

 

ex)

// ArrayList 초기화 & 데이터 추가, 배열 초기화
ArrayList<String> list = new ArrayList<>();
list.add("d");
list.add("e");
list.add("a");
list.add("b");
list.add("c");
String[] array = new String[list.size()];
		
// 정렬 전 출력
System.out.println("정렬 전 : " + list + "\n");
		
// ArrayList -> Array 반복문
for (int i = 0; i < array.length; i++) {
	array[i] = list.get(i);
}
		
// 오름차순 정렬
Arrays.sort(array);
		
// ArrayList 초기화
list.clear();
		
// Array -> ArrayList 반복문
for (int i = 0; i < array.length; i++) {
	list.add(array[i]);
}

// 정렬 후 출력
System.out.println("정렬 후 : " + list);

 

출력 결과)

 

 

 


 

 

※ 정리

 

Arrays.sort()

Collections.sort()

List.sort()

 

까먹지 말자..!