我试图从数组中删除小于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]);
}
}
}
答案 0 :(得分:6)
一,你应该只调用readFile
一次。不要读它两次扔掉第一个。其次,您可以使用IntStream
到filter
要保留的值并删除要忽略的值(在构建新数组之前 - 我不会删除循环中的元素,数组有固定大小 - 因此每个操作都会创建一个新数组)。
相反,我会这样做,
public static void dataCleaning() {
int[] heights = readFile();
int[] myArray = IntStream.of(heights).filter(x -> x >= 0 && x <= 250).toArray();
}
答案 1 :(得分:1)
此处ArrayUtils
是由apache(commons-lang)提供的库,您可以使用java.util.Arrays
和java.util.stream.*
int[] newArray = Arrays.stream(heights).filter(x -> x >= 0 && x <= 250).toArray();
答案 2 :(得分:0)
您可以创建另一个数组来存储新元素.LIKE:
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++;
}
}
}
编辑: 或者你可以编辑高度数组,也可以用newArrayIndex代替newArray。