gpt4 book ai didi

Java 8 lambdas 多个过滤器调用

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:58:29 24 4
gpt4 key购买 nike

使用 filter(Predicate<? super T> predicate) 时在 Java 8 lambda 表达式中调用,关于是否将所有 Predicate 放在一起,我有两种想法一次调用中的逻辑,或链接 filter(Predicate<? super T> predicate)在适当的地方调用以提高可读性。

我假设链接 filter(Predicate<? super T> predicate)调用会很便宜,因为它们还没有遇到终止符,所以在可读性方面会出错,但我对我对 Streams 的了解不够自信。 API 以充分了解权衡是什么。

借助于以下示例(考虑过于复杂的谓词),哪个实现更好:List<Person> usingOneFilterList<Person> usingTwoFilters

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class SEExample {

private static class Person {
private final int age;
private final int heightInCm;

public Person(int age, int heightInCm) {
this.age = age;
this.heightInCm = heightInCm;
}

public int getAge() {
return age;
}

public int getHeight() {
return heightInCm;
}
}

public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person(14, 140),
new Person(15, 140),
new Person(16, 150),
new Person(17, 120));
List<Person> usingOneFilter = people
.stream()
.filter(p -> p.getAge() >= 16 && p.getHeight() >= 130)
.collect(Collectors.toList());
List<Person> usingTwoFilters = people
.stream()
.filter(p -> p.getAge() >= 16)
.filter(p -> p.getHeight() >= 130)
.collect(Collectors.toList());
}

}

最佳答案

在这样一个小示例中,我认为可读性并没有真正受到影响,但我仍然更喜欢使用单独的过滤方法。当然,如果它更复杂的话。

这确实不是很贵。没有理由“优化”它,除非您遇到性能问题并且分析显示这是瓶颈。但这极不可能。

关于Java 8 lambdas 多个过滤器调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31710636/

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