JAVA
190716 Comparable 과 compareTo
猫猫
2019. 7. 16. 14:37
반응형
package prj190716;
import java.lang.reflect.Array;
import java.util.*;
class Student implements Comparable<Student>{
String name= "";
int id = 0;
double score = 0;
boolean test = false;
@Override
public int compareTo(Student stu) { //Type object를 받아서 return값을 던지는데
if(test != true) return (int)score - (int)stu.score; // id순으로 정렬할거라 어떤것이 큰지 비교한다. 양수/0/음수 로 비교함. 0이면 같다, 양수면 크다, 음수면 작다 판단, 기본 오름차순
else return (id - stu.id) * (-1); // 내림차순정렬
}
Student() {};
public Student(String name, int id, double score){
this.name =name;
this.id = id;
this.score =score;
}
@Override //오버라이드 안하면 주소값만 나옴
public String toString() {
return "Student [ name=" + name + ", id = " + id + ", score = " + score + " ] \n"; //println하면 소환됨
}
}//class end
public class Test0716 {
public static void main(String[] args) {
Student [] s = new Student[5];
s[0] = new Student("이재오",50120001,4.2);
s[1] = new Student("이정훈",50020001,9.2);
s[2] = new Student("정순원",10120001,8.2);
s[3] = new Student("이정훈",20020001,1.22);
s[4] = new Student("이재오",30120001,2.2);
Arrays.sort(s);//정렬
//실행되면 compareTo가 실행, return 값이 양수인지 음수인지 0인지 판단
// 그걸 가지고 정렬함
for(Student i : s) {
System.out.print(i);
}
}//main end
} // class end
반응형