Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数组中删除元素_Java_Arrays - Fatal编程技术网

Java 从数组中删除元素

Java 从数组中删除元素,java,arrays,Java,Arrays,可能重复: 有没有办法去掉数组中的一些元素。 例如,如果我有这个数组 int testArray[] = {0,2,0,3,0,4,5,6} 有没有一种“快速”的方法可以去掉等于0的元素 int resultArray[] = {2,3,4,5,6} 我尝试了这个函数,但使用列表时迷路了 public int[] getRidOfZero(int []s){ List<> result=new ArrayList<>(); for(int i=0; i&

可能重复:

有没有办法去掉数组中的一些元素。 例如,如果我有这个数组

int testArray[] = {0,2,0,3,0,4,5,6}
有没有一种“快速”的方法可以去掉等于0的元素

int resultArray[] = {2,3,4,5,6}
我尝试了这个函数,但使用列表时迷路了

public int[] getRidOfZero(int []s){
   List<> result=new ArrayList<>();
   for(int i=0; i<s.length; i++){
     if(s[i]<0){
       int temp = s[i];
       result.add(temp);
     }
   }
   return result.toArray(new int[]);
}
public int[]getRidOfZero(int[]s){
列表结果=新建ArrayList();

对于(int i=0;i而言,您非常接近,但是:

  • 您的泛型出错(
    List
    语法无效)
  • 您的比较仅在元素小于零时添加元素(而不是在元素不等于零时添加)
  • 您调用了错误的方法。因为
    int
    是原语,您必须自己将列表转换回数组

public int[]getRidOfZero(int[]s){
列表结果=新的ArrayList();
用于(int i:s){
如果(i!=0){
结果.添加(i);
}
}
int[]toReturn=new int[result.size()];

对于(int i=0;iJava数组,无法调整其大小。您需要创建一个新数组

计算数组中的非零元素。创建一个大小相同的新数组。将元素从旧数组复制到新数组,跳过零元素


您可以使用列表执行此操作。最好的方法是创建一个整数列表;向其中添加非零元素;然后使用toArray从列表中创建数组。

由于您从数组开始,因此需要创建一个新数组并从旧数组中复制项,不包括零

如果你一次去掉一堆零,这会很快

否则,您需要从双链接开始


LinkedList有一个迭代器,允许您沿着列表移动并删除元素,这将是一个常量时间操作。

我猜这里的temp必须是一个整数object@Julio:抱歉,这是我的错误。已修复。toArray返回对象[]数组,您的方法返回int[]原语使这更痛苦。“胡里奥-不,既不是代码,也不是代码< >代码> > 需要是<代码>整型< /Cord>对象,这得益于java的魔力。@ Yishai:NGH……你是对的。固定。因为这个问题专门要求删除数组中间的元素,这不是一回事——投票重新打开。
public int[] getRidOfZero(int[] s) {
    List<Integer> result = new ArrayList<Integer> ();
    for (int i : s) {
        if (i != 0) {
            result.add(i);
        }
    }

    int[] toReturn = new int[result.size()];
    for (int i=0; i<result.size(); i++) {
        toReturn[i] = result.get(i);
    }

    return toReturn;
}