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
相关推荐
1. **迭代与集合操作**:在Java 8以下,处理集合主要依赖于迭代器(Iterator)和集合的内置方法,如`for-each`循环、`List`的`forEach`方法、`Collections`类中的`sort`、`reverse`等。这些方法可以完成基本的数据...
在Java编程中,Stream API是Java 8引入的一个强大特性,它允许我们以声明性方式处理数据集合。本文将深入探讨如何使用Stream API对日期进行排序。日期排序在数据分析、日志处理、报表生成等场景中非常常见。下面我们...
在Java8中,Stream 是一项重要的新增特性,它提供了一种全新的处理集合数据的方式。不同于传统的集合类(如List、Set等),Stream API支持更加灵活的数据处理方式,使得开发人员能够以声明式的方式来处理数据。 **...
在Java编程语言中,集合框架是处理对象组的重要工具,它提供了一种高效、灵活的方式来存储和操作数据。本文将深入探讨Java中的集合操作,并结合PPT(虽然这里没有提供具体的PPT内容,但通常这样的资源会包含示例、...
Java8中引入了Stream API,提供了对集合的高效处理方式。本文将详细介绍如何使用Stream对Map集合进行过滤,包括使用filter方法过滤null和空字符串,以及使用map方法对元素进行转换操作,并使用collect方法对结果进行...
Collector接口是Java 8 Stream API中不可或缺的一部分,它提供了一种灵活的方式来收集Stream处理的结果。通过理解其核心方法和特性,可以有效地实现数据的转换和汇总,无论是在顺序流还是并行流中。掌握Collector...
在Java中,java.util.stream.Collectors.toMap()方法是一个非常实用的工具,它允许我们将流(Stream)中的元素收集到一个Map中。...希望能够帮助你在实际开发中更好地利用Java 8的Stream API来处理数据集合。
Stream API是Java 8中非常重要的特性之一,它不仅提供了强大的集合处理能力,还大大简化了代码的编写过程。通过合理的使用Stream API,可以轻松地完成复杂的数据处理任务,提高开发效率。希望本文能够帮助读者更好地...
例如,在一个购物网站中,需要对用户的订单进行处理,可以使用 Java 集合框架的 List 集合来存储订单信息,然后使用 Stream API 的 filter 方法来过滤订单,最后使用 collect 方法将订单收集到一个新的 List 中。...
Stream是 Java 8新增加的类,用来补充集合类。 Stream代表数据流,流中的数据元素的数量可能是有限的,也可能是无限的。 Stream和其它集合类的区别在于:其它集合类主要关注与有限数量的数据的访问和有效管理...
这篇博文将深入探讨Java 8中的流,并结合`java8-stream.xls`这个Excel文件来解析流的相关概念。 **1. 流的概念** 流是Java 8引入的新概念,它是一个顺序或并行的数据序列,可以源自任何支持数据源(如集合、数组、I...
Java 8 中的 Stream API 提供了强大的数据处理功能,其中的终端操作是指将 Stream 处理结果转换为实际的数据结构。Java Stream 管道流数据处理操作可以分为三个阶段:第一阶段是将集合、数组或文本文件转换为 Java ...
Stream API是一个在Java 8中引入的概念,它提供了一种全新的处理数据的方式,可以看作是从集合到计算的一种桥梁。Stream不是存储数据的数据结构,而是对数据进行操作的接口,它可以来源于数组、集合或者I/O通道。 ...
Java 8 中引入的 Stream API 是 Java 开发的一个里程碑式的功能特性,极大的方便了开发人员处理集合类数据的效率。Stream API 使得开发人员可以使用更简洁、易用、快捷的方式来处理集合类数据,而不是传统的 for ...
首先,Java 8中的主要新特性之一是Lambda表达式。Lambda表达式简化了函数式编程,允许开发者以更简洁的方式编写匿名函数。例如,可以使用lambda表达式来创建Runnable、Comparator或Function等接口的实例,使得代码...
主要是介绍在 JDK8中使用 stream 流的 groupingBy 方法源进行最大值分组、最小值分组、平均值分组、统计分组
- Java 8 支持类型级别的注解,可以用于验证程序的类型安全性,例如在泛型中使用 `@NonNull` 注解标记非空约束。 10. **改进的枚举类型**: - Java 8 增强了枚举类型,可以定义接口和方法,使枚举更加灵活。 ...
Java 8 中使用 Stream 遍历 Map Java 8 中引入了 Stream 概念, Stream 是一种非常强大的功能,可以使我们更加简单的操作 Map 对象。Map 是 Java 中非常常用的一个集合类型,我们通常也需要去遍历 Map 去获取某些值...