gpt4 book ai didi

java - 移动部分数组中的对象

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:42 24 4
gpt4 key购买 nike

我正在尝试移动部分数组中的对象,以便它们被覆盖,并且所有内容都会向左移动。我知道您可以使用 arrayCopy 方法,但我尝试使用 for 循环来理解 arrayCopy 方法的含义。这是我的第一次尝试:

boolean search = false;
for(int i = 0; i < (numCourses - 1 ); i++){
if(arrayCourses[i].getRegistration() == crn){
arrayCourses[i] = arrayCourses[1 + i];}
}
return search;

但是,我意识到for循环搜索了crn,然后如果它等于它,那么它将用比它大的值替换它并继续整个循环,所以我最后仍然有相同数量的类(class)而不是替换它们。

所以我做了一些别的东西:

boolean search = false;
for(int i = 0; i < (numCourses - 1 ); i++){
if(arrayCourses[i].getRegistration() == crn){
for(int j = i -1; j > 0 ; j--){
arrayCourses[j] = arrayCourses[1 + j];}
}
}
return search;

这样它将搜索循环,从索引开始并将其替换为数组中所有前面的对象。但我是否应该使用临时变量来保存它?我想我的问题是理解第二个循环应该在哪里开始/结束。

最佳答案

public static native void arraycopy(Object src,  int  srcPos,
Object dest, int destPos,
int length);

java.lang.System.arrayCopyjava 中的 native 函数,因此我怀疑您的循环能否帮助您理解它是如何“真正”处理的,因为它可能是用 c 编写的,并且只是移动指针以使其更加高效,但无论如何。

虽然还不清楚你的问题是什么,或者你实际上想做什么,但这里有一个简单的算法,可以数组中的所有内容向左移动

public class Test {

private Test() {
final String[] arrayOfString = {"A", "B", "C", "D"};

for(final String s : shift(arrayOfString))
System.out.println(s);
}

private String[] shift(final String[] pArrayOfString)
{
final String[] newArray = new String[pArrayOfString.length - 1];

for(int i = 1; i <= newArray.length; i++)
newArray[i - 1] = pArrayOfString[i];

return newArray;
}

public static void main(String args[]) {
Test test = new Test();
}
}

这将打印B,C,D

现在调整此代码以适应您想要完成的任何任务。

关于java - 移动部分数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28355524/

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