Java 从double数组中删除元素

Java 从double数组中删除元素,java,Java,如何从双精度数组中删除所有出现的元素。考虑 double[] arr = { 0.0,4.8,5.1,0.0,9.8} 我希望输出为{4.8,5.1,9.8}您必须创建一个新数组,以便 List<Double> removals = Arrays.asList(arr); while(removals.remove(0.00)) {} double [] newArr = removals.toArray(new String[removals.size()]); arr = ne

如何从双精度数组中删除所有出现的元素。考虑

double[] arr = { 0.0,4.8,5.1,0.0,9.8}

我希望输出为{4.8,5.1,9.8}

您必须创建一个新数组,以便

List<Double> removals = Arrays.asList(arr);
while(removals.remove(0.00)) {}
double [] newArr = removals.toArray(new String[removals.size()]);
arr = newArr;

有了Java8流的强大功能,您就可以轻松完成

double[] arr = {0.0, 4.8, 5.1, 0.0, 9.8};

double[] result = Arrays.stream(arr)
        .filter(e -> e != 0.0)
        .toArray();

System.out.println(Arrays.toString(result));

遍历数组元素,若它不等于零,则记住它,并递增计数器。循环之后,你会得到类似的结果

{4.8,5.1,9.8,0.0,9.8} 电流=3

然后使用arr=Arrays.copyOfarr,current;删除未使用的值 并在新数组{4.8,5.1,9.8}中得到结果

    double[] arr = {0.0, 4.8, 5.1, 0.0, 9.8};
    int current = 0;
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] != 0) {
            arr[current++] = arr[i];
        }
    }
    arr = Arrays.copyOf(arr, current);

你试过什么吗?这是一项简单的任务。
    double[] arr = {0.0, 4.8, 5.1, 0.0, 9.8};
    int current = 0;
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] != 0) {
            arr[current++] = arr[i];
        }
    }
    arr = Arrays.copyOf(arr, current);