java—将所有值向上移动一个,并将新值放到底部

kupeojn6  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(237)

我有一个数组[8],freeindex=0。如何将数组中的所有值向上添加一个位置,并向最后一个位置添加新值?最简单的答案是

amuletHolder[8] = amuletHolder[7];
amuletHolder[7] = amuletHolder[6];
amuletHolder[6] = amuletHolder[5];
amuletHolder[5] = amuletHolder[4];
amuletHolder[4] = amuletHolder[3];
amuletHolder[3] = amuletHolder[2];
amuletHolder[2] = amuletHolder[1];

如何将新值添加到底部?

oxcyiej7

oxcyiej71#

你需要数组有什么原因吗?
linkedlist内置了很多这样的功能,可以非常动态地执行如下操作:

updateList(list, delId, addtId, newItem){
    list.remove(delId);
    list.add(addId, newItem);
}

或者如果你严格按照先进先出的原则排队会更好

updateQueue(queue, newItem){
  queue.remove();
  queue.add(newItem);
}

编辑:但是如果你真的需要一个数组并且需要保持[0]为空,我认为你的数组没有问题。它确实比其他人建议的循环使用了更多的行,但是如果只有8个元素,它就没有意义了。
若要添加新项并保留[0]为空,只需添加 array[1]=newItem; ```
array[7]=array[6];
array[6]=array[5];
array[5]=array[4];
array[4]=array[3];
array[3]=array[2];
array[2]=array[1];
array[1]=newItem;

或者像其他人建议的那样使用循环;比如:

for(int i=7;i>1;i--){
array[i]=array[i-1];
}
array[1]=newItem;

hsvhsicv

hsvhsicv2#

使用for循环:

for (int i = length - 1; i > 0; --i) {
    amuletHolder[i] = amuletHolder[i - 1];
}
amuletHolder[0] = newValue;

旁注:如果数组长度为8,则有效索引为0-7。代码将在第一行抛出arrayindexoutofboundsexception。

相关问题