정렬
Last updated -
2024년 12월 18일
Edit Source
# 정렬 관련
import java.util.Arrays;
Arrays.sort(arr)
: 배열 오름차순정렬Arrays.sort(arr, 시작 index, 끝 index + 1)
: 배열 구간 오름차순 정렬- 문자열 정렬할 때는
char[]
로 바꿔서 해야함char[] arr = str.toCharArray()
Arrays.sort(arr)
String str = new String(arr)
import java.util.Collections;
- Java에서는 int (primitive tytpe)으로 구성된 배열을 한번에 내림차순 정렬할 수 있는 방법이 없음 → Integer로 선언되어 있어있으면 Collections 활용해서 가능
Arrays.sort(arr, Collections.reverseOrder());
: 내림차순 정렬
# 객체 정렬
- Comparable과 Comparator의 차이 (링크 참고)
- Comparable 인터페이스
compareTo(T o1)
- 자기 자신과 매개변수 객체를 비교
- java.lang에 있어서 import 할 필요 X
- Comparator 인터페이스
compare(T o1, T o2)
- 두 매개변수 객체를 비교
- java.util.Comparator로 import 필요 O
Comparable<class> + @Override compareTo() 조합
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| class Student implements Comparable<Student> {
int test;
// 오름차순
@Override
public int compareTo(Student student) {
return this.test - studnet.test;
}
// 내림차순
@Override
public int compareTo(Student student) {
return studnet.test - this.test;
}
}
|
- 람다
- 결국 메서드 하나인 인터페이스니까 람다로 가능
1
2
3
4
5
| // 오름차순
Arrays.sort(students, (a, b) -> a.test - b.test);
// 내림차순
Arrays.sort(students, (a, b) -> b.test - a.test);
|
- 2번에 걸쳐 다른 기준으로 정렬
Arrays.sort
로 정렬하는 순간에 Comparator
이용하여 compare()
compare()
는 compareTo()
와는 다르게 인자를 2개 받아서 기준을 설정해줘야 함
1
2
3
4
5
6
| Arrays.sort(students, new Comparator<Student>() {
@Override
public int compare(Student a, Student b) {
return a.height - b.height;
}
})
|