2014-09-17 2 views
4

그래서 여러 배열을 처리해야하는 프로그램을 만들고 있습니다. 한 배열의 정렬을 반영하기 위해 이러한 모든 배열을 정렬 할 수있는 방법이 있습니까? 이 값은 세 가지 배열에서 동일한 인덱스 위치에 있고 정렬 후 동일한 인덱스 값에 숙박 할 필요가여러 배열을 동시에 정렬

예 :

String[] distance = [1,3,6,7,9]; 
String[] name = [Joel, John, Joe, Jill, Jane] 
String[] values = [1.5,2.3,5.6,7.1,6.5]; 

어떤 식 으로든가 있습니까 :

내가 세 가지 배열이 거리 배열을 정렬 한 다음 정렬을 다른 배열에 반영하십시오. 따라서 이름으로 정렬하고 Jane이 0이되면 다른 배열의 같은 위치에있는 다른 값도 0으로 이동합니다. 어떻게하면됩니까?

+1

위치를 나타내는 데 4 번째 배열을 사용할 수 없습니까? – daentech

+0

어떻게하면됩니까? – axtscz

+0

기본적으로 프록시 배열이 필요합니다. 프록시 배열은 다른 배열에 대한 인덱스를 보유합니다. 당신은 당신의 필요에 따라이 배열을 정렬합니다. – MadProgrammer

답변

9

더 나은/더 많은 객체 지향 접근법은 3 개의 필드 각각을 보유하고 필요한 필드에서 정렬 할 수있는 객체를 가질 수 있습니다. 각 배열이 다른에 인덱스 매핑을 가지고 있다고 가정

public static class MyObject implements Comparable<MyObject> { 

    public int distance; 
    public String name; 
    public float value; 


    // Replace this with whichever field is needed 
    @Override 
    public int compareTo(MyObject o) { 
     // If it's the String 
     return this.name.compareTo(o.name); 
     // If it's one of the values 
     return this.distance - o.distance; 
    } 
} 
7

, 그 매핑을 유지하는 데 사용되는 프록시 배열이 필요합니다, 다음

매핑 ... 예를 들어, 그에 따라이 배열을 정렬 어레이는 그 자신의 순서가 변경 될 수 있더라도, 마스터 인덱서 역할, 여전히 나타내는 다른 배열의 연관된 위치를 가리키는 각 엔트리 ...

String[] distance = {"1", "3", "6", "7", "9"}; 
String[] name = {"Joel", "John", "Joe", "Jill", "Jane"}; 
String[] values = {"1.5", "2.3", "5.6", "7.1", "6.5"}; 
// Mapping array... 
Integer[] proxyLookup = new Integer[]{0, 1, 2, 3, 4}; 

System.out.println("Unsorted..."); 

for (int index : proxyLookup) { 
    System.out.println(name[index] + "; " + distance[index] + "; " + values[index]); 
} 

Arrays.sort(proxyLookup, new Comparator<Integer>() { 
    @Override 
    public int compare(Integer o1, Integer o2) { 
     return name[o1].compareTo(name[o2]); 
    } 
}); 

System.out.println("Sorted..."); 

for (int index : proxyLookup) { 
    System.out.println(name[index] + "; " + distance[index] + "; " + values[index]); 
} 

이 출력 할 것이다 ...

,363,210
Unsorted... 
Joel; 1; 1.5 
John; 3; 2.3 
Joe; 6; 5.6 
Jill; 7; 7.1 
Jane; 9; 6.5 

Sorted... 
Jane; 9; 6.5 
Jill; 7; 7.1 
Joe; 6; 5.6 
Joel; 1; 1.5 
John; 3; 2.3 

참고 값 나열 다르지만 연관된 데이터가 동일하게 유지되는 순서 ...

는 간단한 해결책이 특성을 유지 한 Object로 데이터를 캡슐화하는 것이다. 그러면 문제가 크게 단순화됩니다.

관련 문제