11-3)
다음에 제시된 Student 클래스가
Comparable 인터페이스를 구현하도록 변경해서
이름(name)이 기본 정렬 기준이 되도록 하시오
답)
package exercise11_3;
import java.util.*;
class Student implements Comparable<Student> { //Comparable<타입> 필수ㅠㅠ이거땜에 고생함
String name;
int ban;
int no;
int kor, eng, math;
Student(String name, int ban,int no,int kor,int eng,int math) {
this.name = name;
this.ban = ban;
this.no = no;
this.kor = kor;
this.eng = eng;
this.math = math;
}
int getTotal() {
return kor+eng+math;
}
float getAverage() {
return (int)((getTotal()/3f)*10+0.5)/10f;
}
@Override
public String toString() {
return name+","+ban+","+no+","+kor+","+eng+","+math+","+getTotal()+","+getAverage();
}
@Override //Comparable의 메소드 오버라이딩 해줘야 함
public int compareTo(Student s) { //객체 자신과 s를 비교함
return this.name.compareTo(s.name); //기본정렬은 내객체.compareTo(매개변수객체) //역순은 반대로 하면 됨
}
}
public class Ex11_3 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(new Student("홍길동",1,1,100,100,100));
list.add(new Student("남궁성",1,2,90,70,80));
list.add(new Student("김자바",1,3,80,80,90));
list.add(new Student("이자바",1,4,70,90,70));
list.add(new Student("안자바",1,5,60,100,80));
Collections.sort(list);
Iterator it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
결과
return s.name.compareTo(this.name) //니꺼-내꺼
이렇게 하면 역순으로 나온당
728x90
'문제를 풀어보자' 카테고리의 다른 글
ORACLE) Do it! 오라클 6강 연습문제 (0) | 2022.10.20 |
---|---|
JAVA) 자바의 정석 기초편 11-4 연습 문제(Comparator 정렬) (0) | 2022.10.14 |
JAVA) 자바의 정석 기초편 7-5 연습문제 풀이 (0) | 2022.10.09 |
JAVA) 자바의 정석 기초편 7-2 연습문제 풀이 (1) | 2022.10.09 |
JAVA) 자바의 정석 기초편 7-1 연습문제 풀이 (0) | 2022.10.09 |