티스토리 뷰

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
반응형

'JAVA' 카테고리의 다른 글

190807 java 컴이랑 하는 야구게임  (0) 2019.08.07
190717 Comparator, Comparing, Ramda  (0) 2019.07.17
190716 람다식과 FunctionalInterface  (0) 2019.07.16
190716 람다식, arraylist 테스트  (0) 2019.07.16
190716 Enhancedfor 3중 배열  (0) 2019.07.16