我正在创建一个方法,将 0 的所有实例移动到 ArrayList 的末尾,但保留其他数字的原始顺序。
public static ArrayList<Integer>
zerosBack(ArrayList<Integer> arr)
{
for(int i = 0; i < arr.size(); i++){
if(arr.get(i) == 0){
arr.remove(i);
arr.add(0);
}
}
return arr;
}
该方法似乎适用于除此之外的所有输入:[4, 0, 0, 0, 0, 0]
我的程序输出:[0, 0, 4, 0, 0, 0] 而不是 [4, 0, 0, 0, 0, 0]
最佳答案
通常最好从末尾迭代 ArrayList,并在删除元素时移动到前面。这消除了从列表开头移动到列表末尾时发生的索引错误。例如,以下代码应该可以工作:
public static ArrayList<Integer> zerosBack(ArrayList<Integer> arr) {
for (int i = arr.size()-1; i>=0; i--) {
if (arr.get(i) == 0) {
arr.remove(i);
arr.add(0);
}
}
return arr;
}
关于java - 将 int 0 的所有元素移到 ArrayList 的后面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61369598/