java - 将 int 0 的所有元素移到 ArrayList 的后面?

标签 java

我正在创建一个方法,将 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/

相关文章:

java - SOLR 在搜索时选择索引

java - 如何将毫秒转换为一天中的时间?

java - 如何显示与JPS页面不同的URL链接?

java - 正则表达式 模式匹配 java

java - 静态初始化期间资源初始化?

java - 自动完成 TextView + Json 服务器动态获取标签

Java批处理作业监听器afterJob获取作业的id

Java CLI : Cant parse arguments

java - Spring框架关系映射

java - 在CBC模式下使用blowfish进行加解密,但是如何进行IV呢?