gpt4 book ai didi

java - 如何从 int 数组(Java)中删除空元素?

转载 作者:行者123 更新时间:2023-11-30 06:02:15 25 4
gpt4 key购买 nike

我有一个包含元素 0int 数组。我想删除这些元素并减小数组的大小。

我在 Removing empty element from Array(Java) 中阅读了 String 数组的示例并将其应用于我的案例:

int[] in1 = {0, 0, 2, 0, 3};
int[] in1 = Arrays.stream(in1).filter(x -> x != 0).toArray(int[]::new);

不幸的是,我收到一个错误:

The method toArray() in the type IntStream is not applicable for the arguments (int[]::new)

我的问题是:

  1. 我怎样才能实现我的目标?
  2. 为什么我不能像过滤 String 数组一样过滤我的 int 数组?

最佳答案

对于原始 int[]不要为 toArray() 提供参数:

in1 = Arrays.stream(in1).filter(x -> x != 0).toArray();

另请注意,您没有使用前缀 in1int[]同样,因为您已经定义了变量 in1

它与另一个问题的工作方式不同的原因是因为 Arrays.stream(int[]) 返回 IntStream其版本为 toArray() 返回 int[] .

使用

Arrays.stream(new String[]{"This","", "will", "", "", "work"})

将调用 Arrays.stream(T[] array) ,其中:

Returns a sequential Stream with the specified array as its source.

或者一个Stream<String> .然后使用 toArray()来自 Stream类(class)将调用 this版本,它接受 IntFunction , 这会将其转换为特定类型的 Array . (不接受来自 toArray() 的参数的 Stream 方法返回一个 Object[] )

关于java - 如何从 int 数组(Java)中删除空元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55465272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com