자바 TreeSet 사용
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;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.