보통 배열을 정렬할때 value값을 기준으로 내부의 value값만 정렬한다.
하지만 배열의 정렬되는 value값 기준으로 index값도 같이 바뀌어야 되는 경우가 있다.
코드
//정렬해야할 정수형 배열
int arr1[] = {5,2,8,1,7};
//ValueIndexPair타입 배열 생성
ValueIndexPair[] valuePair =new ValueIndexPair[arr1.length];
//valuePair배열에 arr1배열의 index와 value값 저장
for(int i=0;i< arr1.length;i++){
valuePair[i] = new ValueIndexPair(arr1[i],i);
}
//valuePair배열의 value값 기준으로 정렬
Arrays.sort(valuePair,Comparator.comparingInt(ValueIndexPair::getValue));
//오름차순정렬 후 기존 arr1배열에서의 index와 value값을 확인가능하다.
valuePair[i].index
valuePair[i].value
//ValueIndexPair클래스 생성
static class ValueIndexPair {
private final int value;
private final int index;
public ValueIndexPair(int value, int index) {
this.value = value;
this.index = index;
}
public int getValue() {
return value;
}
public int getIndex() {
return index;
}
}