2014-02-10 20 views
1

我已經在Java中啓動了一個數組,與另一個數組相同。我這樣做是因爲我只想排序數組的副本而不是原始數據。這工作正常,新數組填充了原始值。當我排序數組時,問題就出現了。原件也得到排序。所以我的原創也被排序。我如何解決這個問題,以便只有數組的副本被排序。Java Arrays.sort(test)對兩個數組進行排序

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

向我們展示如何創建此數組的副本。 –

+0

向我們展示了整個代碼..你在做什麼像double [] oldDistanceSort = distanceSort ?? ..即,你是如何複製數組?按值或僅僅通過引用? – TheLostMind

+1

'double [] distanceSort =距離;'不會創建''distance'數組的副本。使用'Arrays#copyOf'方法。或者只是'距離.clone();'。它會在這裏工作。 –

回答

13

=不用於將一個數組的元素複製到另一個數組中。

使用

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

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

複製指定的數組,截取或用零填充(如果必要 )以使副本具有指定的長度。對於 在原始數組和複製中均有效的所有索引,這兩個數組將包含相同的值。對於複製 中有效但不是原始索引的副本,副本將包含0L。當且僅當指定長度大於 原始數組的長度時,這些索引將存在 。

參數:

ARR - 數組要複製
長度 - 該拷貝的長度是 返回

返回:

原始陣列,截短的或用零填充,得到 指定的長度

如果使用=然後distancesSort將指distances的副本。 distancesSort中的任何更改也會反映distances中的更改。

相關問題