stream对象

  1. Stream

  2. IntStream

  3. LongStream

  4. 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笔记的更多相关文章

  1. java8 新特性学习笔记

    Java8新特性 学习笔记 1主要内容 Lambda 表达式 函数式接口 方法引用与构造器引用 Stream API 接口中的默认方法与静态方法 新时间日期 API 其他新特性 2 简洁 速度更快 修 ...

  2. Java8 新特性 Stream 非短路终端操作

    非短路终端操作 Java8 新特性 Stream 练习实例 非短路终端操作,就是所有的元素都遍厉完,直到最后才结束.用来收集成自己想要的数据. 方法有: 遍厉 forEach 归约 reduce 最大 ...

  3. Java8 新特性 Stream 短路终端操作

    短路终端操作 Java8 新特性 Stream 练习实例 传入一个谓词,返回传为boolean,如果符合条件,则直接结束流. 匹配所有 allMatch 任意匹配 anymMatch 不匹配 none ...

  4. Java8 新特性 Stream 无状态中间操作

    无状态中间操作 Java8 新特性 Stream 练习实例 中间无状态操作,可以在单个对单个的数据进行处理.比如:filter(过滤)一个元素的时候,也可以判断,比如map(映射)... 过滤 fil ...

  5. Java8 新特性 Stream() API

    新特性里面为什么要加入流Steam() 集合是Java中使用最多的API,几乎每一个Java程序都会制造和处理集合.集合对于很多程序都是必须的,但是如果一个集合进行,分组,排序,筛选,过滤...这些操 ...

  6. 这可能是史上最好的 Java8 新特性 Stream 流教程

    本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...

  7. java8新特性--Stream的基本介绍和使用

    什么是Stream? Stream是一个来自数据源的元素队列并可以进行聚合操作. 数据源:流的来源. 可以是集合,数组,I/O channel, 产生器generator 等 聚合操作:类似SQL语句 ...

  8. Java8新特性Stream流应用示例

    Java8新特性介绍 过滤集合 List<String> newList = list.stream().filter(item -> item != null).collect(C ...

  9. Java8 新特性 Stream 练习实例

    练习实例 配合Java8 新特性 Steam() API 使用 //没有写get set 构造方法 public class Sku { private Integer skuId; private ...

随机推荐

  1. Linux基础篇二:Bash shell(壳,命令解释器)介绍

    shell执行方式: 第一:输入命令  (简单工作) 第二:   脚本  (适合大量工作) Bash shell 实际上的叫法是  GNU/Bash    如何查询呢:  bash - version ...

  2. [LC] 299. Bulls and Cows

    Example 1: Input: secret = "1807", guess = "7810" Output: "1A3B" Expla ...

  3. scala slick mysql utf8mb4 支持

    语言  scala sql包  slick 3.2.0 数据库  mysql https://stackoverflow.com/questions/36741141/scala-slick-jdbc ...

  4. 2. Unconstrained Optimization(2th)

    2.1 Basic Results on the Existence of Optimizers 2.1. DefinitionLet $f:U->\mathbb{R}$ be a functi ...

  5. Self-examination

    第一次参加省赛,算是真正感受到比赛的残酷.拿到好成绩,需要平时大量的积累,甚至也需要一点运气,然后我还做的不够,但我觉得我可以做得更好. 我之前是没有任何基础,大一才刚刚从知码开门入门.然后刚开始一直 ...

  6. 高级I/O

    1.阻塞问题的几种解决模型 1.1 非阻塞模型:类似于死循环,需要适当加休眠,防止cpu占用太高:效率较低 1.2 线程异步:效率最高的一种解决方案 1.3 I/O多路转接与复用  select(低) ...

  7. Java调用net的webservice故障排除实战分享

    转载地址:http://blog.sina.com.cn/s/blog_4c925dca01014y3r.html 前几天公司要接入国外公司的一个业务功能,对方是提供的net产生的webservice ...

  8. 奇点云数据中台技术汇(五)| CDP,线下零售顾客运营中台

    顾客数据平台(Customer Data Platform,简称CDP),是近年兴起的一种以顾客为核心.聚焦客群细分与人群洞察的企业数据应用平台. 听上去很互联网啊?跟实体行业和零售营销有什么关系呢? ...

  9. zabbix 使用邮件发送告警信息

    配置系统mail命令,使其可以发送外网邮件 mail 命令配置 修改zabbix_server配置文件,使其可以执行告警脚本 [root@rexen etc]# vim /usr/local/zabb ...

  10. python学习笔记(1)python数据类型

    一.数据类型计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要 ...