`

Java8通过管道流(stream)来实现集合的一些聚合函数

 
阅读更多
stream的一些聚合函数包括:
count(), findFirst(), max(), min(), reduce(), sum()

SimpleStreamDemo.java
package corejava8.functional;

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

public class SimpleStreamDemo {

	static class Hero {
		String name;
		int age;

		public Hero(String name, int age) {
			this.name = name;
			this.age = age;
		}
	}

	static Hero[] heroes = { 
			new Hero("Grelber", 21), new Hero("Roderick", 12),
			new Hero("Francisco", 35), new Hero("Superman", 65),
			new Hero("Jumbletron", 22), new Hero("Mavericks", 1),
			new Hero("Palladin", 50), new Hero("Athena", 50) };

	public static void main(String[] args) {

		long adultYearsExperience = Arrays.stream(heroes).filter(b -> b.age >= 18)
				.mapToInt(b -> b.age).sum();
		System.out.println("We're in good hands! The adult superheros have "
				+ adultYearsExperience + " years of experience");

		List<Object> sorted = Arrays.stream(heroes)
				.sorted((h1, h2) -> h1.name.compareTo(h2.name)).map(h -> h.name)
				.collect(Collectors.toList());
		System.out.println("Heroes by name: " + sorted);
	}
}

运行结果:
We're in good hands! The adult superheros have 243 years of experience
Heroes by name: [Athena, Francisco, Grelber, Jumbletron, Mavericks, Palladin, Roderick, Superman]
分享到:
评论

相关推荐

    Java-Java函数式编程教程

    Stream可以串联起来形成一个操作管道,通过这些管道可以进行聚合操作,如查找、过滤、映射和组合。Stream API的设计非常适合函数式编程,因为它鼓励使用声明式编程风格,而不是命令式风格。 4. **Optional类**: ...

    JAVA 8 Stream 2.rar

    Java 8 Stream API是Java开发中的一个重要里程碑,它引入了一种全新的处理数据的方式,使得代码更加简洁、高效。Stream API可以用于处理集合、数组以及其他数据源,提供了丰富的操作,如筛选、映射、聚合等,使得...

    通过项目实例学习Java Stream.pdf

    Java Stream是Java 8引入的重要特性,它提供了一种高效且富有表达力的方式来处理集合数据。Stream API使得处理集合变得更加简洁,尤其是与Lambda表达式配合使用时,极大地提高了代码的可读性和性能。 1. **Stream的...

    java8stream源码-java8-learning:通过复习OCA和OCP来学习Java8

    在这个"java8-stream源码-java8-learning"项目中,我们将深入探讨Java 8的流API,以及其他相关知识点。 1. **流(Stream API)** Java 8的流API是一种处理数据的新方式,它允许程序员以声明性的方式处理集合。流可以...

    深入理解Java函数式编程和Streams API.zip

    7. **收集器(Collectors)**:Collectors是Java 8中提供的一组实用工具类,用于将Stream转换为其他数据结构,如集合或进行聚合操作。常见的收集器有`.toList()`, `.toSet()`, `.toMap()`等。 8. **函数式编程的...

    jdk8 新特性stream 和lambda表达式Demo

    在`jdk8Demo`的示例中,你会看到如何将Stream API和Lambda表达式结合,优雅地处理集合数据,实现数据过滤、转换和聚合等功能。这两个特性不仅让Java代码更简洁,而且提高了代码的可读性和可维护性,是Java开发者必须...

    【转】Stream类

    标题中的“【转】Stream类”表明我们将讨论Java编程语言中的Stream API,这是一个在Java 8及更高版本中引入的强大工具,用于处理集合数据。Stream API提供了声明式编程风格,使得对集合的操作更加高效和简洁。 ...

    java编程的逻辑(高清百度盘)

    书中不仅涵盖了Java语言的基础知识,还深入探讨了近年来Java语言的一些重大更新,特别是Java 8中的Lambda表达式和函数式编程特性。这对于希望了解和掌握现代Java编程方法的开发者来说,是一本不可多得的好书。 ####...

    JavaStreams8个很酷的特性Java开发Java经

    Java Streams 是Java 8引入的一项强大特性,它提供了一种高效且易读的方式来处理集合数据。这个特性极大地改进了Java的编程模型,特别是在处理大量数据时。以下将详细阐述Java Streams的8个很酷的特性及其应用。 1....

    Java-8-Streams-Part-1.pdf

    Java 8 引入了流(Streams)的概念,它是一系列支持顺序和并行处理的元素,并且可以透明地以不同的方式处理,包括过滤、映射转换、查找、匹配和聚合。Java 8 Streams API 是 Java 新增的特性之一,提供了一个高级的...

    java-434107.pdf

    在Linux系统中,经常使用管道符“|”来实现类似的功能,Stream API的设计思想与此类似,这种风格在处理数据流时非常有用。 在处理集合时,开发者可以创建一个流,然后连续进行多个操作,最终得到所需的结果。例如,...

    jdk8安装包,方便java开发者

    9. **并行流(Parallel Streams)**:Stream API支持并行操作,可以充分利用多核处理器的计算能力,通过简单的API调用实现高效的并行计算。 10. **类型注解**:JDK8允许在类型声明(包括参数、返回类型、字段和局部...

    Go-JavaStreamAPI的一个Go语言实现

    在编程领域,Go语言以其简洁、高效的特性深受开发者喜爱,而Java Stream API则是Java 8引入的一个强大特性,它提供了一种处理集合数据的新方式,让代码更加简洁、易读。这个项目“Go-JavaStreamAPI的一个Go语言实现...

    java代码-Java 8 stream的简单使用

    Java 8 是一个重要的Java平台版本,引入了许多新特性,其中最引人注目的就是Stream API。Stream API为处理集合提供了全新的方式,它允许我们以声明性的方式处理数据,简化了代码并提高了效率。让我们深入了解一下...

    java api 1.8中文帮助文档

    3. **Stream API**:提供了一种用于处理集合的新方法,支持数据管道操作,如过滤、映射和聚合,使得代码更简洁、可读性更强。 4. **日期与时间API**:通过`java.time`包提供了新的日期和时间API,取代了过时的`java....

    摆脱Mapper的mybatis-plus,封装stream和lambda操作进行数据返回处理

    这种做法旨在利用Java 8的Stream API和Lambda表达式来增强MyBatis-Plus的查询能力,从而实现更灵活、更优雅的数据处理。 1. **Stream API的引入**: Stream API是Java 8的一个重要特性,它提供了一种全新的处理...

    Java api1.8中文版本

    通过这种方式,开发者可以编写更简洁、更易于理解的代码,特别是在处理集合和并发任务时,Lambda表达式与Stream API结合,能实现强大的数据处理功能。 Stream API是Java 1.8中另一个重要的增强,它提供了一种声明性...

    javastream源码-kaunasjug3streamapi:关于Java8StreamAPIJava源代码的考纳斯-贾格会议#3演示

    Java 8 Stream API 是一种强大的数据处理工具,它引入了函数式编程的概念,使得在Java中处理集合数据变得更加简洁和高效。在这个名为"javastream源码-kaunasjug3streamapi"的项目中,我们可以深入理解Stream API的...

    focus-java8:java 8的一些例子

    本文将深入探讨Java 8的几个关键特性,包括拉姆达表达式、流(Stream)以及默认方法。 1. **拉姆达表达式** (Lambda Expressions) Java 8引入了拉姆达表达式,它是一种简洁的匿名函数表示法,主要用于处理函数接口。...

Global site tag (gtag.js) - Google Analytics