개발/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());
}
}