当前位置: 首页 > 面试题库 >

使用Lambda的Java 8过滤器数组

澹台正真
2023-03-14
问题内容

我有一个double[],我想在一行中过滤掉负值(创建一个没有新数组)而不添加for循环。使用Java 8 Lambda表达式是否可能?

在python中,将使用生成器:

[i for i in x if i > 0]

是否可以在Java 8中做类似的简洁操作?


问题答案:

是的,您可以通过DoubleStream在数组中创建一个,滤除负片,然后将流转换回数组来实现此目的。这是一个例子:

double[] d = {8, 7, -6, 5, -4};
d = Arrays.stream(d).filter(x -> x > 0).toArray();
//d => [8, 7, 5]

如果要过滤不是的引用数组,则Object[]需要使用采用的toArray方法IntFunction来获取原始类型的数组作为结果:

String[] a = { "s", "", "1", "", "" };
a = Arrays.stream(a).filter(s -> !s.isEmpty()).toArray(String[]::new);


 类似资料:
  • 我有一个对象列表,比如。我想根据使用Java 8的一些参数过滤这个列表。但如果参数为,则抛出。如何过滤掉空值? 当前代码如下 如果返回,则抛出。

  • 有两个具有相同结构的地图,即map1和map2,其结构为

  • 如何使用java8流和过滤器过滤嵌套循环? 假设我有一个汽车列表(

  • 本文向大家介绍对python过滤器和lambda函数的用法详解,包括了对python过滤器和lambda函数的用法详解的使用技巧和注意事项,需要的朋友参考一下 1. 过滤器 Python 具有通过列表解析 将列表映射到其它列表的强大能力。这种能力同过滤机制结合使用,使列表中的有些元素被映射的同时跳过另外一些元素。 过滤列表语法: [ mapping-expression for element i

  • 我想用Lambda对列表排序: 但我得到了这个编译错误:

  • 我正在用Java8为一个文件编写一个解析器。使用读取该文件,并返回一个顺序的。 每一行都映射到一个数据对象,如下所示: 现在我们可以将流中的每一行映射到相应的结果: 但是,流现在包含要删除的值: 如我在中所知,如果需要结果,我如何组合映射/筛选操作?