gpt4 book ai didi

Java:移动数组中的项目

转载 作者:行者123 更新时间:2023-11-29 06:45:34 27 4
gpt4 key购买 nike

我想在数组中移动东西。

我希望能够将给定数组中的最后一个项目移动到一个位置,同时将当前位置的那些项目向右移动。我希望它从第一个位置移动到第二个位置,等等,而不替换当前存在的项目。

例)

a,b,c,d,e

假设我想移动到“3”——它会变成

a,b,c,e,d

我目前有以下内容:

public static void moveLastup(String[] stuff, int position) 
{
String y = stuff[stuff.length-1];

for (int x = stuff.length-1; x > position; x--)
list[x] = list[x-1];

stuff[position] = y;
}

编辑:抱歉,我认为我不够清楚。我想要做的是通过这种方法,我应该能够将最后一 block 移动到任何地方。

for (int pos = 0; pos < stuff.length; pos++)
{
moveLastup(list,pos);
showList(list);
}

现在当我执行它时,它只需要 for 循环中下一个列表中的最后一项例如)

e,a,b,c,d

e,d,a,b,c

e,d,c,b,a

我想展示

e,a,b,c,d

a,e,b,c,d

a,b,e,c,d

最佳答案

我知道问题是关于 Arrays - 不想开始讨论性能“对比”问题和“为什么我使用纯数组” - 但对于那些使用 List 我认为这可能会有用。

java.util.Collections.rotate 方法。是的,这个名字很奇怪,通过查看 javadoc 的一部分:

Note that this method can usefully be applied to sublists to move one or more elements within a list while preserving the order of the remaining elements. For example, the following idiom moves the element at index j forward to position k (which must be greater than or equal to j):

    Collections.rotate(list.subList(j, k+1), -1);

To make this concrete, suppose list comprises [a, b, c, d, e]. To move the element at index 1 (b) forward two positions, perform the following invocation:

    Collections.rotate(l.subList(1, 4), -1);

The resulting list is [a, c, d, b, e].

To move more than one element forward, increase the absolute value of the rotation distance. To move elements backward, use a positive shift distance.

public void moveElement(List list, int a, int b) {
// forward or backward
int direction = a > b ? 1 : -1;
// always from minor to major to subList
int minor = a < b ? a : b;
int major = b > a ? b : a;
Collections.rotate(list.subList(minor, major + 1), direction);
}

关于Java:移动数组中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5535925/

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