2014-02-10 5 views
1

다른 배열과 동일하게 배열을 Java로 초기화했습니다. 원래 배열이 아닌 배열의 복사본 만 정렬하기 때문에이 작업을 수행했습니다. 이것은 새로운 배열이 원래 값으로 채워지는 경우에도 잘 동작합니다. 그런 다음 배열을 정렬 할 때 문제가 발생합니다. 원본도 정렬됩니다. 그래서 내 원본도 정렬됩니다. 배열의 복사본 만 정렬되도록 어떻게 수정해야합니까?Java Arrays.sort (test)는 두 개의 배열을 정렬합니다.

double[] distancesSort = distances; 
Arrays.sort(distancesSort); 
+0

이 배열의 복사본을 어떻게 생성했는지 보여주십시오. –

+0

우리에게 전체 코드를 보여줍니다. double [] oldDistanceSort = distanceSort ?? .. 배열과 같은 것을 어떻게 복사하고 있습니까? – TheLostMind

+1

'double [] distanceSort = distance;'당신의'distance' 배열의 복사본을 생성하지 않습니다. 'Arrays # copyOf' 메서드를 사용하십시오. 아니면 그냥'distances.clone();'. 여기에서 작동합니다. –

답변

13

=은 한 어레이의 요소를 다른 어레이로 복사하는 데 사용되지 않습니다.

사용

double[] distancesSort = Arrays.copyOf(distances,distances.length);

Arrays.copyOf(double[] arr, int length)

복사 지정된 배열을 절단 또는 제로 패딩 (필요한 경우 ) 따라서 복사는 지정된 길이를 갖는다. 이 원래 배열과 복사본에서 모두 유효한 모든 인덱스의 경우 두 배열은 동일한 값을 포함합니다 ( ). 사본에는 유효하지만 원본에는 유효하지 않은 색인의 경우 복사본에 0L이 포함됩니다. 지정된 길이가 원래 배열의 길이보다 큰 경우에만 이러한 색인은 이됩니다.

매개 변수 :

편곡 -
길이를 복사 할 배열 - 가

반환 반환 될 수있는 복사본의 길이 :

을,210

원래의 배열, 절단 또는 다음 distancesSortdistances를 참조합니다 =을 사용하는 경우 지정된 길이를

을 얻기 위해 0으로 채워의 사본. distancesSort의 변경 사항은 distances의 변경 사항을 반영합니다.

관련 문제