[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