[英]java element XOR in array
我对java数组元素的XOR有问题,这是我的代码:
public int[] shuffle() {
int[] copy = new int[original.length];
System.arraycopy(original, 0, copy, 0, original.length);
for (int i = 0; i < copy.length; i++) {
int s = i + (int) (Math.random() * (copy.length - i));
copy[i] = copy[i] ^ copy[s];
copy[s] = copy[i] ^ copy[s];
copy[i] = copy[i] ^ copy[s];
}
return copy;
}
我只是想交换数组中的元素。 结果似乎很奇怪,例如[4,5,0,6,0,1,0] ...我对此完全感到困惑。
copy[i] = copy[i] ^ copy[s];
copy[s] = copy[s] ^ copy[i];
copy[i] = copy[i] ^ copy[s];
要么
copy[i] ^= copy[s];
copy[s] ^= copy[i];
copy[i] ^= copy[s];
但是我更喜欢Collections.shuffle(List)
并将int[]
传递给方法并使其静态; 喜欢,
public static int[] shuffle(int[] original) {
List<Integer> al = IntStream.of(original).boxed().collect(Collectors.toList());
Collections.shuffle(al);
return al.stream().mapToInt(Integer::intValue).toArray();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.