java8新特性——stream笔记
stream对象
Stream
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> createStreamFromValues() {
        return Stream.of("hello", "alex", "wangwenjun", "world", "stream");
    }
    /**
     * 使用Arrays.stream()创建流
     * 可以生成IntStream,LongStream,DoubleStream
     * @return
     */
    private static Stream<String> createStreamFromArrays() {
        String[] strings = {"hello", "alex", "wangwenjun", "world", "stream"};
        return Arrays.stream(strings);
    }
操作
filter : 过滤, 过滤掉不符合条件的数据。
map :转换流类型, 返回一个流,该流包含将给定函数应用于该流元素的结果。
 比如一个Stream 类型的流组装后成为Stream的流
limit : 分页。
collect : 将流收集成一个数组。
  List<Dish> menu = Arrays.asList(
                new Dish("pork", false, 800, "肉类"),
                new Dish("beef", false, 700, "肉类"),
                new Dish("chicken", false, 400, "肉类"),
                new Dish("french fries", true, 530, "鱼肉类"),
                new Dish("rice", true, 350, "鱼肉类"),
                new Dish("season fruit", true, 120, "鱼肉类"),
                new Dish("pizza", true, 550, "鱼肉类"),
                new Dish("prawns", false, 300, "其他"),
                new Dish("salmon", false, 450, "其他"));
        //创建菜单流
        List<Map<String,Integer>> result = menu.stream().filter(d -> {
            // 过滤出卡路里大于300的值
            System.out.println("filtering->" + d.getName());
            return d.getCalories() > 300;
        })
                .map(d -> {
                    Map<String, Integer> map = new HashMap<>();
                    map.put(d.getName(),d.getCalories());
                    return map;
                })
                .limit(3)
                .collect(toList());
        System.out.println(result);
其他操作
  List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 6, 7, 7, 1);
        List<Integer> result = list.stream().filter(i -> i % 2 == 0).collect(toList());
        System.out.println("i -> i % 2 的值  :  "+result);
        result = list.stream().distinct().collect(toList());
        System.out.println("去重   :   "+result);
        result = list.stream().skip(2).collect(toList());//跳过前两个数
        System.out.println("跳过   : "+result);
        result = list.stream().limit(4).collect(toList());//取前4个值
        System.out.println("分页   : "+result);
        System.out.println("循环方式一  : ");
        list.forEach(i -> System.out.println(i));
        System.out.println("循环方式二  : ");
        list.forEach((Integer i) -> System.out.println(i));
        System.out.println("循环方式三  : ");
        list.forEach(System.out::println);
        for (int i : list) {
            System.out.println(i);
        }
**** 码字不易如果对你有帮助请给个关注****
**** 爱技术爱生活 QQ群: 894109590****
java8新特性——stream笔记的更多相关文章
- java8 新特性学习笔记
		
Java8新特性 学习笔记 1主要内容 Lambda 表达式 函数式接口 方法引用与构造器引用 Stream API 接口中的默认方法与静态方法 新时间日期 API 其他新特性 2 简洁 速度更快 修 ...
 - Java8 新特性 Stream 非短路终端操作
		
非短路终端操作 Java8 新特性 Stream 练习实例 非短路终端操作,就是所有的元素都遍厉完,直到最后才结束.用来收集成自己想要的数据. 方法有: 遍厉 forEach 归约 reduce 最大 ...
 - Java8 新特性 Stream 短路终端操作
		
短路终端操作 Java8 新特性 Stream 练习实例 传入一个谓词,返回传为boolean,如果符合条件,则直接结束流. 匹配所有 allMatch 任意匹配 anymMatch 不匹配 none ...
 - Java8 新特性 Stream 无状态中间操作
		
无状态中间操作 Java8 新特性 Stream 练习实例 中间无状态操作,可以在单个对单个的数据进行处理.比如:filter(过滤)一个元素的时候,也可以判断,比如map(映射)... 过滤 fil ...
 - Java8 新特性 Stream() API
		
新特性里面为什么要加入流Steam() 集合是Java中使用最多的API,几乎每一个Java程序都会制造和处理集合.集合对于很多程序都是必须的,但是如果一个集合进行,分组,排序,筛选,过滤...这些操 ...
 - 这可能是史上最好的 Java8 新特性 Stream 流教程
		
本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...
 - java8新特性--Stream的基本介绍和使用
		
什么是Stream? Stream是一个来自数据源的元素队列并可以进行聚合操作. 数据源:流的来源. 可以是集合,数组,I/O channel, 产生器generator 等 聚合操作:类似SQL语句 ...
 - Java8新特性Stream流应用示例
		
Java8新特性介绍 过滤集合 List<String> newList = list.stream().filter(item -> item != null).collect(C ...
 - Java8 新特性 Stream 练习实例
		
练习实例 配合Java8 新特性 Steam() API 使用 //没有写get set 构造方法 public class Sku { private Integer skuId; private ...
 
随机推荐
- scala编程(六)——函数式对象
			
Rational 的式样书 分数:rational number 是一种可以表达为比率 d n 的数字,这里的 n 和 d 是数字,其中 d 不能为零.n 被称作是分子:numerator,d 被称作 ...
 - 【学习笔记】 Johnson 全源最短路
			
前置扯淡 一年多前学的最短路,当时就会了几个名词的拼写,啥也没想过 几个月之前,听说了"全源最短路"这个东西,当时也没说学一下,现在补一下(感觉实在是没啥用) 介绍 由于\(spf ...
 - Jarque-Bera test|pp图|K-S检验|
			
Jarque-Bera test: 如何绘制pp图? 找该直线的截距和斜率,通过截距和斜率的值找到正态参数均值和方差,可对这些正态参数进行正态检验. K-S检验的的特点? 并不是只针对正态分布,是 ...
 - python或pip'不是内部或外部命令”
			
Python不是内部外部命令:说明在环境变量中没有添加python的安装文件夹路径 所以我们在path环境变量中添加 E:\python36; Pip不是内部外部命令:说明在环境变量中没有添加pyth ...
 - Halcon算子含义
			
1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样本添加到一个高斯混合模型的训练数据上. 2.classify_class_gmm ...
 - HDU-6312-Game
			
题意: 一个集合里有1到n,两个人轮流从中取数,取出一个数的同时这个数的因子也被取走.取走最后一个数者为胜.判断是否先手必胜. 思路: 一道挺有意思的博弈题.一开始在纸上列出了n为1到6的情况,发现都 ...
 - 解析Maven的settings.xml文件
			
一.镜像问题 1.为什么需要配置maven国内镜像? 在不配置镜像的情况下,maven默认会使用中央库.--https://repo.maven.apache.org/maven2 maven中央库在 ...
 - 吴裕雄--天生自然 PYTHON数据分析:医疗数据分析
			
import numpy as np # linear algebra import pandas as pd # data processing, CSV file I/O (e.g. pd.rea ...
 - 中国的规模优势,有望帮助AI芯片后来者居上?
			
芯片一直是个神奇的东西,表面上看是电脑.笔记本.智能手机改变了世界,其实,真正改变世界的硬件内核是芯片,芯片相关的技术才是科技界最实用.最浪漫的基础技术,也正因如此,谁掌握了芯片基础技术,谁就能立于 ...
 - React中key的讲解
			
通过阅读React的文档我们知道React这个框架的核心思想是,将页面分割成一个个组件,一个组件还可能嵌套更小的组件,每个组件有自己的数据(属性/状态);当某个组件的数据发生变化时,更新该组件部分的视 ...