자바 TreeSet 사용

/* TreeSet: Set 집합 에 있 는 요 소 를 지정 한 방식 으로 정렬 할 수 있 습 니 다.        요소 의 유일 성 을 확보 하 는 방식: 비교 결 과 를 통 해 0 인지 여부.        바 텀 데이터 구 조 는 이 진 트 리 입 니 다. * /  
import java.util.*;
 
 
class TreeSetDemo2  
{
    public static void main(String[] args)  
    {
        TreeSet ts = new TreeSet();
 
        ts.add(new Student("lisi0",30));
        ts.add(new Student("lisixx",29));
        ts.add(new Student("lisi9",29));
        ts.add(new Student("lisi8",38));
        ts.add(new Student("lisixx",29));
        ts.add(new Student("lisi4",14));
        //ts.add(new Student(39));
        ts.add(new Student("lisi7",27));
 
 
 
        System.out.println(ts);
    }
}
 
//                。         。
class Student implements Comparable
{
    private int age;
    private String name;
    Student(String name,int age)
    {
        this.age = age;
        this.name = name;
    }
 
    public int compareTo(Object obj)
    {
        
        Student stu = (Student)obj;
        
        int num = new Integer(this.age).compareTo(new Integer(stu.age));
 
        return num==0?this.name.compareTo(stu.name):num;
 
        /*
        if(this.age>stu.age)
            return 1;
        if(this.age==stu.age)
            return this.name.compareTo(stu.name);
        return -1;
        */
        /**/
    }
 
    public int getAge()
    {
        return age;
    }
    public String toString()
    {
        return name+"::"+age;
    }
}

 


 
=============================================
/* TreeSet: Set 집합 에 있 는 요 소 를 지정 한 방식 으로 정렬 할 수 있 습 니 다.        요소 의 유일 성 을 확보 하 는 방식: 비교 결 과 를 통 해 0 인지 여부.        바 텀 데이터 구 조 는 이 진 트 리 입 니 다.         정렬 의 첫 번 째 방법:            원소 자체 가 비교 성 을 갖 도록 하 다.요소 가 Comparable 인 터 페 이 스 를 실현 하기 만 하면 compare To 방법 을 덮어 쓰 면 됩 니 다.                        그러나 요소 자체 가 비교 성 을 가지 지 않 거나 요소 자체 가 가 진 비교 성 이 필요 한 것 이 아니다.            예 를 들 어 학생 들 의 자 연 스 러 운 순 서 는 나이 에 따라 순 서 를 매 기 는 것 이 고 지금 은 학생 들 의 이름 에 따라 순 서 를 매 기 려 고 한다.기 존 코드 를 바 꾸 지 않 아 도 된다.            이 럴 때 어 떡 하지?        정렬 의 두 번 째 방식: 자체 비교 기 방식.            이 때 는 집합 자체 가 비교 성 을 갖 게 할 수 있다.            Comparator 인 터 페 이 스 를 구현 하고 compare 를 덮어 쓰 는 방법 을 정의 할 수 있 습 니 다.이 Comparator 인터페이스 하위 클래스 대상 을 실제 매개 변수 로 합 니 다.            TreeSet 집합 구조 함수 에 전달 합 니 다.             그 대상 은 바로 비교 기다.   */
import java.util.*;
 
 
class TreeSetDemo3  
{
    public static void main(String[] args)  
    {
        TreeSet ts = new TreeSet(new StudentComparatorByName());
 
        ts.add(new Student("lisi0",30));
        ts.add(new Student("lisixx",29));
        ts.add(new Student("lisi9",29));
        ts.add(new Student("lisi8",38));
        ts.add(new Student("lisixx",29));
        ts.add(new Student("lisi4",14));
        //ts.add(new Student(39));
        ts.add(new Student("lisi7",27));
 
 
 
        System.out.println(ts);
    }
}
 
class StudentComparatorByName implements Comparator
{
    public int compare(Object o1,Object o2)
    {
        Student s1 = (Student)o1;
        Student s2 = (Student)o2;
 
        int num = s1.getName().compareTo(s2.getName());
        return num==0?new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())):num;
    }
}
 
 
//                。         。
class Student implements Comparable
{
    private int age;
    private String name;
    Student(String name,int age)
    {
        this.age = age;
        this.name = name;
    }
 
    public int compareTo(Object obj)
    {
        
        Student stu = (Student)obj;
        
        int num = new Integer(this.age).compareTo(new Integer(stu.age));
 
        return num==0?this.name.compareTo(stu.name):num;
 
        /*
        if(this.age>stu.age)
            return 1;
        if(this.age==stu.age)
            return this.name.compareTo(stu.name);
        return -1;
        */
        /**/
    }
 
    public int getAge()
    {
        return age;
    }
    public String getName()
    {
        return name;
    }
    public String toString()
    {
        return name+"::"+age;
    }
}
 


좋은 웹페이지 즐겨찾기