Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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 - Fatal编程技术网

Java—关于如何删除满足特定条件的元素的建议?

Java—关于如何删除满足特定条件的元素的建议?,java,Java,我试图从数组中删除小于0或大于250的某些元素。我已经读过arrayUtils.removeElement,但它似乎不起作用(arrayUtils无法解决)。对我能用什么有什么建议吗 以下是导入的库: import java.io.*; import java.util.*; import java.lang.*; public static void dataCleaning() { readFile(); int[] heights = readFile(); int[] my

我试图从数组中删除小于0或大于250的某些元素。我已经读过arrayUtils.removeElement,但它似乎不起作用(arrayUtils无法解决)。对我能用什么有什么建议吗

以下是导入的库:

import java.io.*;
import java.util.*;
import java.lang.*;

public static void dataCleaning() {
  readFile();
  int[] heights = readFile();
  int[] myArray[];
  for (int i = 0; i < heights.length; i++) {
    if (heights[i] > 250 || heights[i] < 0) {
      ArrayUtils.removeElement(heights, heights[i]);
    }
  }
}
import java.io.*;
导入java.util.*;
导入java.lang.*;
公共静态void数据清理(){
readFile();
int[]heights=readFile();
int[]myArray[];
对于(int i=0;i250 | |高度[i]<0){
ArrayUtils.移除(高度,高度[i]);
}
}
}

您可以创建另一个数组来存储新元素。例如:

   public static void dataCleaning(){
       int[] heights = readFile();
       int[] myArray;

       int[] newArray;
       int newArrayIndex=0;
       for (int i = 0; i < heights.length; i++) {
            if (heights[i] > 250 || heights[i] < 0) {
                newArray[newArrayIndex]=heights[i];
                newArrayIndex++;
            }
       }
   }
publicstaticvoiddatacleaning(){
int[]heights=readFile();
int[]myArray;
int[]新数组;
int newArrayIndex=0;
对于(int i=0;i250 | |高度[i]<0){
newArray[newArrayIndex]=高度[i];
newArrayIndex++;
}
}
}
编辑:
或者,您也可以编辑高度数组,只需使用它代替newArrayIndex中的newArray即可。

一次,您可能只需调用
readFile
。不要读两遍就把第一遍扔掉。其次,您可以使用
IntStream
筛选要保留的值,并删除要忽略的值(在构建新数组之前,我不会删除循环中的元素,数组具有固定的大小,因此每个操作都会创建一个新数组)

相反,我会这样做

public static void dataCleaning() {
    int[] heights = readFile();
    int[] myArray = IntStream.of(heights).filter(x -> x >= 0 && x <= 250).toArray();
}
publicstaticvoiddatacleaning(){
int[]heights=readFile();

int[]myArray=IntStream.of(heights).filter(x->x>=0&&x这里
ArrayUtils
是apache(commons lang)提供的一个库,您可以使用
java.util.array
java.util.stream.

int[] newArray = Arrays.stream(heights).filter(x -> x >= 0 && x <= 250).toArray();

int[]newArray=Arrays.stream(heights).filter(x->x>=0&&x ArrayUtils)是apache(commons lang)的一个库。您需要下载它并将其添加到您的项目/类路径中。您需要一个
newArrayIndex++
位置;您还应该告诉OP如何适当调整
newArray
的大小。