使用Stream从int []数组中查找奇数

4 java java-stream

我创建了一个数组并尝试使用流来查找第一个奇数,如下所示:

int[] arr = new int[]{2, 4, 6, 8, 9, 12};
int oddOne = Stream.of(arr).filter(i -> i % 2 != 0).findFirst().get();
                                   // fails above
Run Code Online (Sandbox Code Playgroud)

Error: | incompatible types: int[] cannot be converted to int

我究竟做错了什么?我该如何解决?

GBl*_*ett 10

你需要使用Arrays.stream():

Arrays.stream(arr).filter(i -> i % 2 != 0).findFirst().getAsInt();
Run Code Online (Sandbox Code Playgroud)

哪一个:

返回以IntStream指定数组作为源的顺序.

截至目前,您正在使用重载方法Stream.of(T t),它只是:

返回Stream包含单个元素的顺序.

所以它只是一个Stream单一的int[]


同样作为nullpointer指出,调用时get()不确保实际上会出现奇数Array会导致错误.orElse()如果不存在奇数,最好使用返回默认值