Comparable 인터페이스를 TreeSet과 결합하여 객체 자동 정렬
이런 상황을 겪으면서 어떤 대상의 수조나 체인 테이블에 대해 일정한 규칙에 따라 정렬을 해야 한다면 우리는 어떻게 해야 합니까?
이러한 요구 사항은 다음과 같습니다.
1. 수요1은 학생 대상에 대해 나이에 따라 순서를 정하고 나이가 어린 사람은 앞에 배열한다.
이런 수요만 보면 실현은 비교적 간단하다. 스스로 함수를 써서 빠른 정렬이나 흙이 섞인 거품 정렬을 실현하고 나이에 따라 정렬하면 된다.다음 요구 사항을 살펴보겠습니다.
2. 수요2
학생 대상에 대해서는 연령에 따라 순서를 정하면 어린 사람이 앞서고, 나이가 같은 사람이 앞서고, 키가 작은 사람이 앞선다.
3. 수요3
학생 대상에 대해 나이에 따라 순서를 정하고 나이가 어린 사람이 앞선다.나이가 같고 키가 작은 사람이 앞에 섰다.키가 비슷하고 몸무게가 가벼운 것이 앞선다.
...
이러한 수요는 페이지의 복잡화에 따라 점점 복잡해질 수 있다. 만약에 스스로 하려고 한다면 여러 겹으로 끼워 넣고 논리가 매우 복잡할 것이다. 그러면 기존의 비교적 간단한 메커니즘이 있는가.
정답은 Comparable 인터페이스를 실현하는 것입니다.
구체적인 예는 다음과 같습니다.
public class Student implements Comparable{
private int age;
public Student(int age)
{
this.age = age;
}
@Override
public int compareTo(Object obj) {
Student stu = (Student)obj;
if(this.age>stu.age)
return 1;
else if(this.age
호출 코드:
public static void main(String[] args) {
TreeSet treeSet = new TreeSet();
treeSet.add(new Student(1));
treeSet.add(new Student(3));
treeSet.add(new Student(2));
for(Student student:treeSet)
{
System.out.println(student.getAge());
}
}
결과 출력:
1
2
3
이를 통해 알 수 있듯이 자동으로 나이순으로 정렬됩니다. 코드를 다시 수정하여 학생들이 나이순으로 정렬하도록 하겠습니다.
public int compareTo(Object obj) {
Student stu = (Student)obj;
if(this.age>stu.age)
return -1;
else if(this.age
결과 출력:
3
2
1
이를 통해 알 수 있듯이 대상을 통해Comparable 인터페이스를 실현하고TreeSet의 방식과 결합하여 대상을 정렬하는 것은 매우 편리하며 논리가 비교적 간단하기 때문에 나중에 변경이 있으면compareTo 방법을 직접 수정하면 된다.
전재 대상:https://www.cnblogs.com/jerry1999/p/4175933.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.