Arrays.sort()
import java.util.Arrays;
Integer arr[] = new Integer[N];
for (int i = 0; i<N;i++){
arr[i] = Integer.parseInt(br.readLine());
}
//오름차순
Arrays.sort(배열);
//내림차순
Arrays.sort(배열, Collections.reverseOrder());
- 정렬 방식 : DualPivotQuicksort
- 시간복잡도 : 평균 $O(nlogn)$ / 최악 $O(n^2)$
Collections.sort()
import java.util.Collections;
List<Integer> list = new ArrayList<>();
for (int i = 0; i<N;i++){
list.add(Integer.parseInt(br.readLine()));
}
// 오름차순
Collections.sort(배열);
// 내림차순
Collections.sort(list, Collections.reverseOrder());
Collections.reverse(list);
// 대소문자 구분 없이 오름차순
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
// 대소문자 구분 없이 내림차순
Collections.sort(list, Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));
- 정렬방식 : TimSort
- 시간복잡도 : 평균,최악 $O(nlogn)$
List.sort() - Java 8 이후
import java.util.Comparator;
// 오름차순
list.sort(Comparator.naturalOrder());
// 내림차순
list.sort(Comparator.reverseOrder());
// 대소문자 구분 없이 오름차순
list.sort(String.CASE_INSENSITIVE_ORDER);
// 대소문자 구분 없이 내림차순
list.sort(Collectsion.reverseOrder(String.CASE_INSENSITVE_ORDER));
- Collections.sort() 정렬 시 해당 객체의 Comparable을 구현한 compareTo() 메소드를 참조하여 정렬 순서 결정
더보기
public class SortArrayList {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
list.add(new Student(1,55));
list.add(new Student(3,100));
list.add(new Student(2,70));
Collections.sort(list);
}
}
class Student implements Comparable<Student>{
int no, score;
public Student(int no, int score){
super();
this.no = no;
this.score = score;
}
@Override
public int compareTo(Student o){
return this.no - o.no; //no기준 오름차순
}
}
- 사용자가 정의한 Comparator는 Collections.sort() 또는 List.sort() 메소드의 파라미터로 전달되어, 정렬의 기준이 됨.
더보기
public class SortArrayList {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
list.add(new Student(1,55));
list.add(new Student(3,100));
list.add(new Student(2,70));
Collections.sort(list, new StudentComparator());
}
}
class StudentComparator implements Comparator<Student>{
@Override
public int compare(Student o1, Student o2){
return o1.no - o2.no;
}
}
class Student{
int no, score;
public Student(int no, int score){
super();
this.no = no;
this.score = score;
}
}
모두 정렬의 순서는 다음과 같다.
- 오름차순 : 숫자 - 대문자 - 소문자 - 한글 순
- 내림차순 : 한글 - 소문자 - 대문자 - 숫자 순
참고
[Java]자바의 정렬 라이브러리 Arrays.sort() / Collections.sort() / List.sort() 비교 정리
'공부 > Java' 카테고리의 다른 글
[Java]size(),length,length(),capacity() 차이 (0) | 2023.02.08 |
---|---|
[Java] 자바 배열 복사하기 (0) | 2023.01.12 |
[Java]Comparable / Comparator 인터페이스 특징과 차이 정리 (0) | 2023.01.05 |
[Java]Java의 시간 다루기 (0) | 2022.09.04 |
[Java] DFS/BFS 탐색 알고리즘 (0) | 2022.02.08 |
댓글