728x90
클래스에서 정렬 재정의 방법 예시
- 기본 클래스(Main)안에 생성한 클래스(Lecture)을 넣는다.
- implements Comparable<>로 상속시키기.
- @Override로 compareTo 함수 재정의하기.
- 클래스는 배열 형태로 선언하기 Lecture[] lecture = new Lecture[N];
import java.util.*;
import java.io.*;
public class Main
{
public static void main(String args[])
{
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Lecture[] lecture = new Lecture[N];
for(int i=0; i<N; i++){
int[] lectureInfo = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
lecture[i] = new Lecture(lectureInfo[0], lectureInfo[1], lectureInfo[1]-lectureInfo[0]);
}
Arrays.sort(lecture); // 정렬
for(int i=0; i<N; i++){
System.out.println(lecture[i].startTime+" "+lecture[i].endTime);
}
} catch (Exception e) {
System.out.println(e);
}
}
static class Lecture implements Comparable<Lecture>{
int startTime;
int endTime;
int duration;
public Lecture(int startTime, int endTime, int duration){
this.startTime = startTime;
this.endTime = endTime;
this.duration = duration;
}
@Override
public int compareTo(Lecture o) {
if(this.startTime == o.startTime) return this.duration - o.duration;
else return this.startTime - o.startTime;
}
}
}
함수에서 정렬 재정의 방법 예시
- 정렬하는 변수의 타입에 따라 정렬 방법이 다른 것에 유의
- 함수에서 정렬을 재정의하는건 Comparator을 사용하며, 안에 들어가는 함수는 compare이다.
String[] str = {"1", "2", "3"};
Arrays.sort(str); // 오름차순
Arrays.sort(str, Collections.reverseOrder()); // 내림차순
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
Collections.sort(list); // 오름차순
Collections.reverse(list); // 내림차순
Collections.sort(list, new Comparator<Integer>() { // 재정의
@Override
public int compare(Integer o1, Integer o2){
return o1 - o2;
}
});
728x90
'IT > Java' 카테고리의 다른 글
[Java] String과 char의 ==와 equals 비교 차이 (0) | 2023.10.24 |
---|---|
[Java] 입출력 클래스(Scanner, BufferedReader, StringTokenizer) (0) | 2022.12.27 |
[Java] br.readLine()을 int[]말고 Integer[]로 받는법 (0) | 2022.12.16 |
[Java] 인터페이스의 장점 (0) | 2022.08.04 |
[Java] String 클래스의 메서드 (0) | 2022.06.28 |