반응형
package dayday15;
/*
* <객체의 정렬>
*
*
*/
import java.util.*;
//객체 정렬 기준 설정 방법
/*
* 1. implements Comparable
* 2. Comparable의 compareTo()메소드를 Override함 (generic)
*/
class Person2 implements Comparable<Person2>{ //객체 정렬을 위해
private String name;
private int age;
public Person2() {
}
public Person2(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Person2 o) {
// TODO Auto-generated method stub
//나이순 정렬!
if(this.age > o.age){
return -1; //앞으로
}else if(this.age < o.age){
return 1; //뒤로
} else {//나이가 같으면 이름순
return this.name.compareTo(o.name);
}
}
//-1, 1??
//sort할때 최소값을 찾아 순서 정렬하기 때문에 들어올 객체와 현재 객체와 비교함.
//음수값 -> 앞으로, 양수 -> 뒤로, 0은 그대로 , 숫자 크기는 상관없다. 음수와 양수가 중요.
/*
* public int compareTo(String anotherString) {
int len1 = value.length;
int len2 = anotherString.value.length;
int lim = Math.min(len1, len2);
char v1[] = value;
char v2[] = anotherString.value;
int k = 0;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
return len1 - len2;
}
*
*/
}
public class test04 {
public static void main(String[] args) {
TreeSet<Person2> ts = new TreeSet<Person2>();
ts.add(new Person2("둘리",5));
ts.add(new Person2("또치",10));
ts.add(new Person2("고길동", 30));
ts.add(new Person2("홍길동", 40));
ts.add(new Person2("단비", 3));
ts.add(new Person2("단비", 5));
//Person class로 할때
//System.out.println(ts);
/*
* java.lang.ClassCastException:
* dayday15.Person cannot be cast to java.lang.Comparable
* 무슨 기준으로 정렬해야 할 지 모르겠다.
*/
System.out.println(ts);
/*
* [
* Person [name=홍길동, age=40]
* , Person [name=고길동, age=30]
* , Person [name=또치, age=10]
* , Person [name=단비, age=5]
* , Person [name=둘리, age=5]
* , Person [name=단비, age=3]
* ]
*/
}
}
반응형
'IT > Programming' 카테고리의 다른 글
[JAVA] LinkedList 사용 예제 (0) | 2023.04.20 |
---|---|
[JAVA] Set Interface 사용 예제 (0) | 2023.04.20 |
[JAVA] Map Interface 사용 예제 (0) | 2023.04.20 |
[JAVA] ArrayList를 활용하여 사용자정보입력 사용 예제 (0) | 2023.04.20 |
[JAVA] Exception class 사용 예제 (0) | 2023.04.20 |