我正在研究 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));