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

[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

활동하기