【问题标题】:Remove redundant from the array从阵列中删除冗余
【发布时间】:2022-01-15 18:32:02
【问题描述】:
int[] arr1 = {5,122,1,44,1,6,4,1,33,1,89,1,225,162,1,1,1,75,11,1,1,1}; 
int remove = 1;

for(int i = 0; i < arr1.length ; i++) { 
    if(remove == arr1[i]) {
        for(int j = i; j <arr1.length - 1; j++) {
            arr1[j] = arr1[j+1];
        }
        break;                                                  
    }
}
for(int i = 0; i<arr1.length-1; i++) {
       System.out.print(arr1[i] + " ");
       }
}

}

我想从这个数组中删除数字 1!它不会起作用,为什么!但是在将数字一更改为数组中的任何数字后,它将被删除!但是为什么我不能删除数字 1 ?来自这个数组?

【问题讨论】:

  • 你的最终数组 arr1 会是什么样子。您是想用其他东西替换 1 还是将它们从数组中完全删除,从而创建一个子数组?
  • 是的,看起来代码当前正在尝试将所有 1 移动到数组的末尾
  • 我想从数组中删除所有的数字1..complie {5,122,44,6,4,33,89,1,225,162,75,11};后一定是这样的;跨度>
  • 删除 1 的方法对您来说是否重要或任何方法都可以?
  • @Richard K Yu 我想从数组中删除第一名!我的数组运行后一定是这样的。 {5,122,44,6,4,33,89,1,225,162,75,11};

标签: java arrays


【解决方案1】:

有多种(有效的)方法可以做到这一点。但严格遵守您的代码和数组的使用我会建议这样的事情。

首先计算出现次数,然后创建另一个数组来存储其余数字。

然后有另一个循环,您遍历第一个数组,如果它与您要删除的数字不匹配,只需将其添加到新数组中。

int[] arr1 = {5,122,1,44,1,6,4,1,33,1,89,1,225,162,1,1,1,75,11,1,1,1};
    int remove = 1;

    int occurences =0, counter=0;

    for(int i = 0; i < arr1.length ; i++) {
        if(remove == arr1[i]) {
            occurences++;
        }
    }

   int[] subArray = new int[arr1.length - occurences];

    //now recreate this

    for(int i = 0; i < arr1.length ; i++) {
        if(remove != arr1[i]) {
           subArray[counter++] = arr1[i];
        }
    }

    for(int i=0; i< subArray.length; i++){
        System.out.print(subArray[i] + " ");
    }

【讨论】:

    【解决方案2】:

    Samip 已经提供了一些清晰且有效的东西,但如果有人对替代解决方案感到好奇,我们也可以使用 Streams API。

    import java.util.Arrays;
    import java.util.stream.Collectors;
    
    public class RemoveOne {
    
        public static void main(String[] args) {
        int[] arr1 = { 5, 122, 1, 44, 1, 6, 4, 1, 33, 1, 89, 1, 225, 162, 1, 1, 1, 75, 11, 1, 1, 1 };
        int remove = 1;
    
        int[] removedArr = Arrays.stream(arr1)
                                 .filter(number -> (number != remove))
                                 .toArray();
    
        Arrays.stream(removedArr)
              .forEach(element -> System.out.print(element + " "));
    
        }
    
    }
    

    输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      相关资源
      最近更新 更多