이것은 사용자 고유의 정렬 루틴을 구현하여 수행 할 수 있지만 더 나은 방법은 리팩터링을하는 것입니다.
각 쌍을 자체 객체로 묶은 숫자 쌍의 배열로 데이터를 캡슐화하십시오. 그런 다음 첫 번째 값을 정렬하고 두 값 중 하나에 액세스 할 수 있습니다.
class Pair<T extends Comparable<T>> implements Comparable<Pair<T>> {
final T a;
final T b;
public Pair (T a, T b) {
this.a = a;
this.b = b;
}
@Override
public int compareTo(Pair<T> o) {
// Comparison on 'a' only.
return a.compareTo(o.a);
}
@Override
public String toString() {
return "{" + a + "," + b + "}";
}
}
public static void main(String args[]) {
Pair[] pairs = {
new Pair(1,2),
new Pair(7,4),
new Pair(6,8),
};
System.out.println("Before: "+Arrays.toString(pairs));
Arrays.sort(pairs);
System.out.println("After: "+Arrays.toString(pairs));
}
인쇄
Before: [{1,2}, {7,4}, {6,8}]
After: [{1,2}, {6,8}, {7,4}]
데이터가 두 줄 밖에 없습니까? 아니면 N 행을 가질 수 있습니까? N 개의 행을 사용하면 정렬 할 행을 값 쌍의 목록으로 가져 와서 원래의 인덱스로 정렬하고 값을 정렬 한 다음 각 행에 대해 새로운 배열을 만들고 원래의 값을 인덱스로 가져와 바꿀 수 있습니다. – Charlie