배열 정렬하는 방법을 알아보자.
본인이 코딩 테스트 풀 때마다 매번 까먹어서 정리하는 글 아님
배열 (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()
까먹지 말자..!
'Java (자바)' 카테고리의 다른 글
[Java] 문자열 String 자르기 / 문자열 String 나누기 / substring() / split() / charAt() (1) | 2024.01.02 |
---|---|
[Java] 문자열(String) 알파벳 대,소문자 변환 / 알파벳 대,소문자 확인 (0) | 2023.12.31 |
[Java] 현재 날짜, 시간 구하기 / Date / Calendar / System 클래스 맛보기 (2) | 2023.04.13 |
[Java] 형 변환 Type Casting / String <-> int / 정수 <-> 실수 / 정수 <-> 정수 / 오버플로우 (2) | 2022.10.05 |
[Java] 변수 타입 확인하기 / 자료형 구분하기 / String int (1) | 2022.10.05 |