개발/Java

[Java] TreeSet 사용시 Comparable 인터페이스를 구현하기

뉴NEW 2022. 8. 22. 09:36

Studenet 클래스, 생성자 호출, getter/setter 생성, toString

	// Student 클래스 생성
	class Student implements Comparable<Student> {
	private String sname;
	private String sno;
	private int score;
	
	public Student(String sname, String sno, int score) {
		this.sname = sname;
		this.sno = sno;
		this.score =score;	
	}
	
    	// getter
	public String getSname() {
		return sname;
	}
	public String getSno() {
		return sno;
	}
	public int getScore() {
		return score;
	}
    
    	// setter
	public void setSname(String sname) {
		this.sname = sname;
	}
	public void setSno(String sno) {
		this.sno = sno;
	}
	public void setScore(int score) {
		this.score = score;
	}
	
    	// toString
	public String toString() {
		return sno +"("+ sname +"):" + score;
	}

 

compareTo() 함수 오버라이딩

크다(1), 같다(0), 작다(-1)

	// 1. 학번순으로 오름차순
	@Override
	public int compareTo(Student s) {
		if (this.sno.compareTo(s.sno)>0) return 1;
		else if (this.sno.compareTo(s.sno)<0) return -1;
		else return 0;
	}
	
	// 2. 이름순으로 오름차순
	@Override
	public int compareTo(Student s) {
		if (this.sname.compareTo(s.sname)>0) return 1;
		else if (this.sname.compareTo(s.sname)<0) return -1;
		else return 0;
	}
	
	// 3. 점수순으로 오름차순
	@Override
	public int compareTo(Student s) {
		if (this.score > s.score) return 1;
		else if (this.score < s.score) return -1;
		else return 0;
	}

 

TreeSet 생성

 

public class TreeSet {
    public static void main(String[] args) {
		TreeSet<Student> set = new TreeSet<Student>();
		
		set.add(new Student("123451", "우영우", 95));
		set.add(new Student("123452", "이준호", 85));
		set.add(new Student("123453", "최수연", 63));
		set.add(new Student("123454", "정명석", 74));
		set.add(new Student("123455", "권민우", 87));
        
        	// 학번, 이름, 점수순으로 오름차순
        	// 클래스에 implements Comparable<Student> 하기
		System.out.println(set);

 

3가지 출력 방법 (확장 for문, Iterator, isEmpty())

		// 출력 1
		for(Student s :set) {
			System.out.println(s);
		}
		System.out.println("크기: " + set.size());
		System.out.println("---------------");
		
		// 출력 2
		Iterator<Student> it = set.iterator();
			while(it.hasNext()) {
				System.out.println(it.next());
		}
		System.out.println("크기: " + set.size());	
		System.out.println("---------------");
		
		// 출력 3
		while(!set.isEmpty()) {
			System.out.println(set.pollFirst());
		}	
		System.out.println("크기: " + set.size());
		
		
		
		}
	}