java - Stream.map.filter的效率

标签 java java-stream

考虑这个类 -

Class Person {
    private Integer age;
    private Integer getAge() {
        return this.age;
    }
}

List<Person> list = new ArrayList<Person> .. 大约 20 个实例

现在我必须找到所有成年人(年龄 >= 18) 我有两种方法可以用流来做到这一点 -

  1. list.stream()
        .map(person -> person.getAge())
        .filter(age -> age >= 18)
        .count()
    
  2. list.stream()
        .filter(person -> person.getAge() >= 18)
        .count()
    

现在我的问题是:将采用方法 1,添加额外的迭代来执行任务,还是只是像方法 2 那样进行一次迭代?

最佳答案

一个流只能使用一次,因此不存在“额外的迭代”。还有一个额外的步骤,因此从技术上讲,第二个步骤更有效。然而,您必须拥有数百万个元素,即使这样,它也几乎不会被注意到。

在这种情况下,主要是选择您喜欢的风格。由于它们都易于阅读,因此第二个更有意义,因为它更简单。

关于java - Stream.map.filter的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57754616/

相关文章:

Java 8 : Change the values of an EntrySet stream

Java 8流短路

java - 在无限流上调用 .map()?

java - 增变器方法不起作用,NetBeans

java - 如何让 Selenium 等待页面加载然后检查 URL?

java - 将 Stream<Stream<T>> 转换为 List<T>

Java 8 Stream 在列表中查找元素

java - 捕获Akka/Java中路径的所有段

java - 如何提取3个键之间的数值?

java - 在 Java 应用程序中使用 groovy.lang.Closure