[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 면 총점으로 내림차순하도록 코드 작성!
'Java' 카테고리의 다른 글
[JAVA] 자바 - Enumeration 인터페이스와 Properties (0) | 2022.08.03 |
---|---|
[JAVA] 자바 - annotation / 빌트인 어노테이션, 메타 어노테이션 (0) | 2022.08.02 |
[JAVA] 자바 - Comparable 클래스와 Collections sort(정렬) / Comparator (0) | 2022.08.02 |
[JAVA] 자바 - shuffle이용해서 조 편성하기 (0) | 2022.08.02 |
[JAVA] 자바 - 컬렉션 Collection 정렬하기(순차/이분/역순 검색) (0) | 2022.08.02 |
블로그의 정보
개발자 미니민의 개발로그
mini_min