Fries

3分钟看完Java 8——史上最强Java 8新特性总结之第二篇 Stream API

久未见 提交于 2020-11-24 12:37:14
目录 · 概况 · 切片(Slicing) · 映射(Mapping) · 匹配(Matching) · 查找(Finding) · 归约(Reducing) · 排序(Sorting) · 数值流(Numeric streams) · 原始类型流(Primitive stream) · 数值范围(Numeric ranges) · 构建流 · 由值创建流 · 由数组创建流 · 由文件生成流 · 由函数生成流(创建无限流) · collect()高级用法 · 分组(Grouping) · 分区(Partitioning) · 并行流 概况 1. Stream API:以声明性方式处理数据集合,即说明想要完成什么(比如筛选热量低的菜肴)而不是说明如何实现一个操作(利用循环和if条件等控制流语句)。 2. Stream API特点 a) 流水线:很多流操作本身会返回一个流,这样多个操作就可以链接起来,形成一个大的流水线。这让可实现延迟和短路优化。 b) 内部迭代:与使用迭代器显式迭代的集合不同,流的迭代操作是在背后进行的。 3. Stream(流):从支持数据处理操作的源生成的元素序列(A sequence of elements from a source that supports data processing operations)。 a) 元素序列:与集合类似

java8新特性——stream笔记

不打扰是莪最后的温柔 提交于 2019-12-07 08:37:50
stream对象 Stream<T> IntStream LongStream DoubleStream 创建 常用的三种方式: 使用list对象: list.stream() − 为集合创建串行流。 list.parallelStream() − 为集合创建并行流。 Arrays: Arrays.stream( T[] array) − 为数组创建流(可以创建IntStream,LongStream,DoubleStrem)。 Stream: Stream.of(T... values) − 为一组同类型的数据创建流。 demo: /** * 集合接口有两个方法来生成流: * 按照流的类型可分为串行流和并行流 * stream() − 为集合创建串行流。 * parallelStream() − 为集合创建并行流。 */ private static Stream<String> createStreamFromCollection() { List<String> list = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl"); return list.stream(); } /** * 使用Stream.of()创建流 * @return */ private static Stream<String>

java8新特性——stream笔记

可紊 提交于 2019-12-06 16:52:19
stream对象 Stream<T> IntStream LongStream DoubleStream 创建 常用的三种方式: 使用list对象: list.stream() − 为集合创建串行流。 list.parallelStream() − 为集合创建并行流。 Arrays: Arrays.stream( T[] array) − 为数组创建流(可以创建IntStream,LongStream,DoubleStrem)。 Stream: Stream.of(T... values) − 为一组同类型的数据创建流。 demo: /** * 集合接口有两个方法来生成流: * 按照流的类型可分为串行流和并行流 * stream() − 为集合创建串行流。 * parallelStream() − 为集合创建并行流。 */ private static Stream<String> createStreamFromCollection() { List<String> list = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl"); return list.stream(); } /** * 使用Stream.of()创建流 * @return */ private static Stream<String>

归约与分组

强颜欢笑 提交于 2019-11-27 00:24:46
区分Collection,Collector和collect 代码中用到的类与方法用红框标出,可从git库中查看 收集器用作高级归约 // 按货币对交易进行分组 Map<Currency, List<Transaction>> currencyListMap = getTransactions().stream() .collect(groupingBy(Transaction::getCurrency)); for (Map.Entry<Currency, List<Transaction>> entry : currencyListMap.entrySet()) { System.out.println(entry.getKey() + "\t" + entry.getValue().size()); } 预定义收集器的功能 将流元素归约和汇总为一个值 元素分组 元素分区,分组的特殊情况,使用谓词作为分组函数(谓词,返回boolean类型的函数) Collectorsors类的静态工厂方法一览 // import static java.util.stream.Collectors.*; Stream<Dish> menuStream = getMenu().stream(); // Collectors类的静态工厂方法 List<Dish> dishes1 =