개발자 미니민의 개발스터디

[JAVA] 자바 - Comparator 으로 성적처리 프로그램 정렬!!

by mini_min
[JAVA]
자바 - Comparator 이용해서 성적처리 프로그램 정렬

자바를 얼추 배워놓고 지금까지 쭉~~응용하는 성적처리 프로그램! 예전에 짜뒀던 코드에 Comparator 를 이용해서 정렬을 해보겠다. 오름차순과 내림차순 모두 정렬 가능!!

 

✔️ 학번 오름차순

public void printAll() {
System.out.println("\n학생 정보...");
List<ScoreVO> list = ss.listScore();
//학번 오름차순
Comparator<ScoreVO> comp = new Comparator<ScoreVO>() {
@Override
public int compare(ScoreVO o1, ScoreVO o2) {
return o1.getHak().compareTo(o2.getHak());
}
};
Collections.sort(list, comp);
💡 학번 오름차순을 할 수 있도록 Comparator 인터페이스를 만들어주고, override로 정렬 기준을 만들어준다. Comparator 객체를 저장하면 자동으로 오라클이 override 를 만들어준다.
ScoreVO 에 있는 학번을 비교하여 정렬하는데, String 자료형이라 'compareTo' 사용. 오름차순이라 위와 같이 작성한다. 

이렇게하면 컬렉션.sort 했을 때 알아서 list 는 comp 객체가 정의한대로 정렬 끝!

 

 

 

✔️ 이름 오름차순

이름 오름차순도 동일한건 마찬가지!

//이름 오름차순
Comparator<ScoreVO> comp = new Comparator<ScoreVO>() {
@Override
public int compare(ScoreVO o1, ScoreVO o2) {
return o1.getName().compareTo(o2.getName());
}
};
Collections.sort(finds, comp);

 

 

 

✔️ 총점 내림차순, 단 총점이 같으면 국어 내림차순

총점 내림차순이지만, 총점이 같으면 국어 내림차순이 1순위인걸 알아야함.

1 순위 : 국어 내림  2순위 : 총점 내림

둘 다 자료형 int 라 compareTo 사용 xx

//총점 내림차순, 단 총점이 같으면 국어 내림차순
Comparator<ScoreVO> comp = new Comparator<ScoreVO>() {
@Override
public int compare(ScoreVO o1, ScoreVO o2) {
if(o1.getTot()==o2.getTot()) {
return -(o1.getKor() - o2.getKor());
}else {
return -(o1.getTot() - o2.getTot());
}
}
};
Collections.sort(list, comp);
💡 if 문으로 총점이 같은 경우엔 국어 점수를 내림차순하고, if문이 false 면 총점으로 내림차순하도록 코드 작성!

 

 

 

 

 

블로그의 프로필 사진

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기