我想複製一個更大的數組,將一些元素通過remove()
方法隨機刪除到一個小數組中。Java如何將較大的數組複製到小數組?
我已使用System.arraycopy()
,但此方法分別複製元素。因此較大陣列中的某些元素不會被複制。
我想將較大的數組的所有未移除的元素複製到小數組中,其長度等於較大數組中未移除元素的數量。
我想複製一個更大的數組,將一些元素通過remove()
方法隨機刪除到一個小數組中。Java如何將較大的數組複製到小數組?
我已使用System.arraycopy()
,但此方法分別複製元素。因此較大陣列中的某些元素不會被複制。
我想將較大的數組的所有未移除的元素複製到小數組中,其長度等於較大數組中未移除元素的數量。
import java.util.concurrent.ThreadLocalRandom; //for shuffling array
import java.util.Random; //for shuffling solution
public class BigToSmallArray {
public static void main(String[] args) {
int[] bigArray = new int[]{0,1,2,3,4,5,6,7,8,9};
int[] smallArray = new int[5];
int[] shuffledBigArray = shuffleArray(bigArray);
for(int i = 0; i < smallArray.length; i++) {
smallArray[i] = shuffledBigArray[i];
}
}
public static int[] shuffleArray(int arr[]) {
Random rnd = ThreadLocalRandom.current();
for (int i = arr.length - 1; i > 0; i--) {
int index = rnd.nextInt(i + 1);
// Simple swap
int a = arr[index];
arr[index] = arr[i];
arr[i] = a;
}
return arr;
}
}
如果你被允許使用其他的「系統庫」,解決方法是超簡單:
arraycopy()
和larger
smaller.length
元素複製到smaller
的一點是:當你洗牌的大陣,你把它變成隨機順序!
但如果你是而不是允許使用「系統」庫;你「洗牌」自己:
larger
;並且對於每次迭代,計算隨機INT larger.length
之後,可以再次使用arraycopy。
請問您可以展示代碼嗎?我無法正確理解。 –
我沒有故意顯示代碼。我認爲這是某種功課;而你不會從其他人那裏學習做功課。但我也增加了另一個建議,這可以歸結爲兩行代碼... – GhostCat
爲什麼不隨機*將大數組中的元素添加到小數組中? – CraigR8806
感謝您的回答。這真的是個好主意,但我剛剛嘗試過,我無法做到。你能告訴我該怎麼做嗎? –
歡迎來到Stack Overflow。通常我們要求提問者首先顯示一個嘗試,或者至少記錄搜索和研究的完成。這不是嚴格的,因爲當我們更清楚地瞭解你面臨的挑戰時,指導你更容易。 –