자바로.util.Collections의sort 방법으로 두 종류의 대상을 정렬합니다
1621 단어 솔루션
이것은 제목이 제기한 문제에 대해 비교적 둔한 해결 방안을 제공했고 외부 비교기 인터페이스인 Comparator를 사용했다.
import java.util.*;
class A implements Comparable{
int num;
public A(int num){
this.num = num;
}
@Override
public int compareTo(A a){
return this.num > a.num ? 1 : -1;
}
@Override
public String toString(){
return "A-"+ this.num;
}
}
class B implements Comparable {
int num;
public B(int num){
this.num = num;
}
@Override
public int compareTo(B b){
return this.num > b.num ? 1 : -1;
}
@Override
public String toString(){
return "B-"+ this.num;
}
}
class ABComparator implements Comparator {
public int compare(Object o1, Object o2) {
if((o1 instanceof A) && (o2 instanceof B)){
A a = (A) o1;
B b = (B) o2;
if(a.num > b.num){
return 1;
} else {
return -1;
}
}
if((o1 instanceof B) && (o2 instanceof A)){
B a = (B) o1;
A b = (A) o2;
if(a.num > b.num){
return 1;
} else {
return -1;
}
}
if((o1 instanceof A) && (o2 instanceof A)){
A a = (A) o1;
A b = (A) o2;
return a.compareTo(b);
}
if((o1 instanceof B) && (o2 instanceof B)){
B a = (B) o1;
B b = (B) o2;
return a.compareTo(b);
}
return 0;
}
}
class Test1 {
public static void main(String[] args) {
List ls = new ArrayList();
ls.add(new A(1));
ls.add(new A(15));
ls.add(new A(20));
ls.add(new A(4));
ls.add(new A(13));
ls.add(new B(11));
ls.add(new B(14));
ls.add(new B(12));
ls.add(new B(13));
ls.add(new B(10));
Collections.sort(ls, new ABComparator());
System.out.println(ls);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
DOM 요소 전체 화면 표시 솔루션이렇게 하면 전체 화면이 표시되지만 DOM 요소의 크기는 변하지 않습니다.걱정하지 마라, 아래에서 너를 도와 이 문제를 해결할 것이다. 이렇게 하면 대부분의 DOM 요소에 작용하지만, iframe 요소에 대해서는 a...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.