使用流 Lambda 拆分整数

use*_*139 1 java string lambda java-stream

我正在研究 Java8 中 Stream 和 Lambda 的用法。您将如何将 Stream 和 Lambda 应用于以下内容:使用 Stream 和 Lambda 打印出以下字符串中的奇数:“[3, 6, 8, 96, 7, 23]”。

我发现使用 for 循环和 parseInt 非常简单,但是如何实现流和 lambda。

YCF*_*F_L 5

您可以像这样将子字符串与 split 一起使用:

String str = "[3, 6, 8, 96, 7, 23]";
Arrays.stream(str.substring(1, str.length() - 1).split(", "))
        .filter(s -> Integer.valueOf(s) % 2 != 0)
        .forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

或者如果你想得到一个数组,那么你可以toArray像这样使用:

.toArray(String[]::new);
Run Code Online (Sandbox Code Playgroud)

或者,如果你想获得一个整数数组,你可以使用一个映射然后一个过滤器,如下所示:

Integer[] array = Arrays.stream(str.substring(1, str.length() - 1).split(", "))
        .map(Integer::valueOf)
        .filter(i -> i % 2 != 0)
        .toArray(Integer[]::new);
Run Code Online (Sandbox Code Playgroud)

输出

3
7
23
Run Code Online (Sandbox Code Playgroud)