使用流 lambda 拆分整数



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

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

你可以像这样使用带有拆分的子字符串:

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);

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

.toArray(String[]::new);

或者如果你想得到一个整数数组,你可以使用一个映射,然后使用这样的过滤器:

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

输出

3
7
23

通过将字符串转换为字符串[],方法是将其拆分为"[","]","和"," 然后过滤空白值而不是奇数整数

Arrays.stream("[3, 6, 8, 96, 7, 23]".split("[,\s\[\]]"))
.filter(s->!s.isBlank() && Integer.valueOf(s)%2!=0)
.forEach(s-> System.out.println(s));

最新更新