JDK7发布两年多后,Java8终于来到了我们面前,我们对很多它的特性期待好久了。其中lambda表达式
是我们谈论最多的一项,但是这个特性还远不是现在的主流,Java8带来了新的stream实现类,实现了
Collections元素的并行处理。可以通过指定条件来过滤集合元素。如果集合是有序的,可以通过集合元素的属性
进行排序。也可以使用常用的功能编程函数,也就是map和reduce。stream类提供诸如mapToInt()、mapToLong()和
处理集合元素的map函数。在当前例子中,我们会列出使用java8 stream来处理集合元素。Stream类的使用也不只限于
Collections,也可以使用数组,生成函数,或者IO通道。大多数情况下,Java 8中的Stream管道包括一个source源,然后是0或者多个filter()
或者map(),最后是forEach()或者reduce()。
下面是Java8中使用Stream来处理集合的代码
import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class StreamDemo{ public static void main(String args[]) { // Initialization of Collection List<Order> orderBook = new ArrayList<>(); Order buyGoogle = new Order("GOOG.NS", 300, 900.30, Order.Side.BUY); Order sellGoogle = new Order("GOOG.NS", 600, 890.30, Order.Side.SELL); Order buyApple = new Order("APPL.NS", 400, 552, Order.Side.BUY); Order sellApple = new Order("APPL.NS", 200, 550, Order.Side.SELL); Order buyGS = new Order("GS.NS", 300, 130, Order.Side.BUY); orderBook.add(buyGoogle); orderBook.add(sellGoogle); orderBook.add(buyApple); orderBook.add(sellApple); orderBook.add(buyGS); // Java 8 Streams Example 1 : Filtering Collection elements // Filtering buy and sell order using filter() method of java.util.Stream class Stream<Order> stream = orderBook.stream(); Stream buyOrders = stream.filter((Order o) -> o.side().equals(Order.Side.BUY)); System.out.println("No of Buy Order Placed :" + buyOrders.count()); Stream<Order> sellOrders = orderBook.stream().filter((Order o) -> o.side() == Order.Side.SELL); System.out.println("No of Sell Order Placed : " + sellOrders.count()); // Java 8 Streams Example 2 : Reduce or Fold operation // Calculating total value of all orders double value = orderBook.stream().mapToDouble((Order o) -> o.price()).sum(); System.out.println("Total value of all orders : " + value); long quantity = orderBook.stream().mapToLong((Order o) -> o.quantity()).sum(); System.out.println("Total quantity of all orders : " + quantity); } } class Order { enum Side { BUY, SELL; } private final String symbol; private final int quantity; private double price; private final Side side; public Order(String symbol, int quantity, double price, Side side) { this.symbol = symbol; this.quantity = quantity; this.price = price; this.side = side; } public double price() { return price; } public void price(double price) { this.price = price; } public String symbol() { return symbol; } public int quantity() { return quantity; } public Side side() { return side; } } Output: No of Buy Order Placed :3 No of Sell Order Placed : 2 Total value of all orders : 3022.6 Total quantity of all orders : 1800
相关推荐
主要给大家介绍了关于Java8中利用stream对map集合进行过滤的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Stream是 Java 8新增加的类,用来补充集合类。 Stream代表数据流,流中的数据元素的数量可能是有限的,也可能是无限的。 Stream和其它集合类的区别在于:其它集合类主要关注与有限数量的数据的访问和有效管理...
主要是介绍在 JDK8中使用 stream 流的 groupingBy 方法源进行最大值分组、最小值分组、平均值分组、统计分组
主要给大家介绍了关于Java8优雅处理集合之Stream的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用java8具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
Map是java中非常常用的一个集合类型,我们通常也需要去遍历Map去获取某些值,java 8引入了Stream的概念,那么我们怎么在Map中使用Stream呢? 基本概念 Map有key,value还有表示key,value整体的Entry。 创建一个Map...
Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda,给我们操作集合(Collection)提供了极大的便利。 Stream将要处理的元素集合看作一种流,在流的过程中,借助`Stream API`对流中的...
包含许多集合操作的类,java的的集合都有,然后,还有ppt做为说明!初学者很合适的!
在这篇“Java 8新特性教程”系列文章中,我们会深入解释,并通过代码来展示,如何通过流来遍历集合,如何从集合和数组来创建流,以及怎么聚合流的值。 在之前的文章“遍历、过滤、处理集合及使用Lambda表达式增强...
Stream API: 介绍 Java 8 中引入的 Stream API,以及如何使用 Stream API 来处理集合数据和进行流式操作。 新的日期和时间 API: 探讨 Java 8 中新增的日期和时间 API,以及如何使用这些 API 来处理日期、时间和...
Java 8引入了Stream API,它是一种强大的工具,用于以声明式和函数式风格处理数据集合。Stream API允许您以元素序列的方式执行操作,如过滤、映射、归约等
Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以...
最近在工作中发现了对于集合操作转换的神器,java8新特性 stream,但在使用中遇到了一个非常重要的注意点,所以这篇文章主要给大家介绍了关于Java8中Stream使用过程中的一个注意事项,需要的朋友可以参考借鉴,下面...
Java8-Stream ...Java 8 API添加了一个新的抽象称为流 Stream,可以让你以一种声明的方式处理数据。 Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶
java8的流式处理极大了简化我们对于集合、数组等结构的操作,让我们可以以函数式的思想去操作,本篇文章将探讨java8的流式数据处理的基本使用。
Java Stream是Java 8中引入的一个功能强大的API,用于处理集合(Collection)数据。它提供了一种流式处理的方式,可以对集合进行各种操作,如过滤、映射、排序等。 使用Java Stream可以简化代码,提高开发效率。它的...
Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以...
Java的集合框架和StreamAPI
如何使用 Java 8 中的新特性 Optional 类型来处理可能为 null 的集合元素? 如何使用 ConcurrentHashMap 类来实现高效的并发缓存? 如何使用 Spliterator 接口来实现自定义的集合遍历逻辑? 如何使用
java 8中构建无限的stream 简介 在java中,我们可以将特定的集合转换成为stream,那么在有些情况下,比如测试环境中,我们需要构造一定数量元素的stream,需要怎么处理呢? 这里我们可以构建一个无限的stream,然后...