我想复制一个更大的数组,其中一些元素被remove()
方法随机删除到一个小数组中。
我使用过System.arraycopy()
,但此方法分别复制元素。因此,不能复制较大阵列中的某些元素。
我想将较大数组的所有未删除元素复制到小数组中,其长度等于较大数组中未删除元素的数量。
答案 0 :(得分:0)
如果您被允许使用其他“系统库”,解决方案非常简单:
arraycopy()
并将smaller.length
元素从larger
复制到smaller
关键是:当您对大数组进行随机播放时,您将其按随机顺序排列!
但是如果您不允许使用“系统”库;你自己“洗牌”:
larger
;并且对于每次迭代,在larger.length
之后,您可以再次使用arraycopy。
答案 1 :(得分:0)
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;
}
}