gpt4 book ai didi

java - 在 Java 中重新排列数组

转载 作者:搜寻专家 更新时间:2023-11-01 01:56:10 25 4
gpt4 key购买 nike

如果我有一个数组:

int[] myArray = new int[10]
for (int i = 0; i < myArray.length; i++) {
myArray[i] = i;
}

//resulting array: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

我怎样才能将 4 后面的所有内容向上移动一个空间,并将 4 放到后面?示例:

这个:

{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

进入这个:

{0, 1, 2, 3, 5, 6, 7, 8, 9, 4}

最佳答案

这个怎么样:

int[] myArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
System.arraycopy(myArray, 5, myArray, 4, 5);
myArray[myArray.length-1] = 4;

在上面的代码中,我使用了 arraycopy方法复制数组中从索引 5 开始到索引 4 的 5 个数字的范围,然后简单地在最后一个位置设置一个 4。

请注意,使用 arraycopy 比在循环中复制值要快得多,因为它通常作为复制内存位置的 native 操作实现。

编辑:

一个更通用的解决方案,一种将数组中的给定位置发送到后面的方法:

public static void sendBack(int[] array, int idx) {
int value = array[idx];
System.arraycopy(array, idx+1, array, idx, array.length-idx-1);
array[array.length-1] = value;
}

对于你的例子,这样调用它:

sendBack(myArray, 4);
// now myArray is {0, 1, 2, 3, 5, 6, 7, 8, 9, 4}

关于java - 在 Java 中重新排列数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8570093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com