我在Java中有一个对象数组,我正在尝试将一个元素拉到顶部,并将其余元素向下移动一个。
假设我有一个大小为10的数组,并且我试图拉出第五个元素。第五个元素进入位置0
,从0到5的所有元素都将向下移位1。
此算法不能正确地移动元素:
Object temp = pool[position];
for (int i = 0; i < position; i++) {
array[i+1] = array[i];
}
array[0] = temp;
我该怎么做才能正确呢?
发布于 2011-11-01 18:20:42
假设您的数组为{10,20,30,40,50,60,70,80,90,100}
你的循环做的是:
数组迭代1: array1 =;{10,10,30,40,50,60,70,80,90,100}
迭代2: array2 = array1;{10,10,10,40,50,60,70,80,90,100}
你应该做的是
Object temp = pool[position];
for (int i = (position - 1); i >= 0; i--) {
array[i+1] = array[i];
}
array[0] = temp;
发布于 2011-11-01 18:15:59
从逻辑上讲,它不起作用,您应该反向循环:
for (int i = position-1; i >= 0; i--) {
array[i+1] = array[i];
}
或者,您可以使用
System.arraycopy(array, 0, array, 1, position);
发布于 2016-01-16 16:34:02
您可以只使用Collections.rotate(List<?> list, int distance)
使用Arrays.asList(array)
转换为List
更多信息请访问:https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#rotate(java.util.List,%20int)
https://stackoverflow.com/questions/7970857
复制