gpt4 book ai didi

使用 Lambda 的 Java 8 过滤器数组

转载 作者:IT老高 更新时间:2023-10-28 20:25:05 28 4
gpt4 key购买 nike

我有一个 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);

关于使用 Lambda 的 Java 8 过滤器数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24112715/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com