原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11858186.html

Java8 Stream 是一个新的东西, 就是能够将常见的数据结构转化成Stream, 再直接用这个Stream来做各种操作, 比如过滤, 大小写转换, 提取某个实体的某个属性, 都可以直接通过Stream的方法来操作, 直接链式编程 , 不需要再进行额外的 new 其他的什么对象等等. 下面直接贴代码介绍一下吧, 不作过多的介绍了, 用一两次就会了.

package stream8;

import java.util.*;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream; /**
* Stream 的一些操作和介绍
*/
public class MainStream {
public static void main(String[] args) {
/**
* 转换成Stream的方式
*/
List<String> strings = new ArrayList<>();
strings.stream();
strings.parallelStream();
/**
* 转换成Stream的方式
*/
String[] arrStr = new String[]{"1", "2", "3"};
Arrays.stream(arrStr);
Stream.of(strings);
Stream.of(arrStr); /**
* 一个Stream只能使用一次, 下面的用法只是为了演示
* Stream转换成其他数据结构
*/
Stream stream = strings.stream();
stream.toArray();
stream.collect(Collectors.toList());
stream.collect(Collectors.toCollection(ArrayList::new));
stream.collect(Collectors.toSet());
stream.collect(Collectors.toCollection(Stack::new));
stream.collect(Collectors.joining()).toString(); /**
* IntStream的用法
*/
IntStream.of(new int[]{1, 2, 3}).forEach(System.out::println); /**
* Intermediate --> Stream 常见的中间操作, 就是可以一直用 "." 接下去的操作
*/
stream.map(null);
stream.mapToInt(null);
stream.flatMap(null);
stream.filter(null);
stream.distinct();
stream.sorted();
stream.peek(null);
stream.limit(0L);
stream.skip(0L);
stream.parallel();
stream.sequential();
stream.unordered();
/**
* Terminal --> Stream的终止操作, 就是当执行完这个操作之后Stream的生命也到此为止了, 也就不能再用 "." 接下去了
*/
stream.forEach(null);
stream.forEachOrdered(null);
stream.toArray();
stream.reduce(null);
stream.collect(null);
stream.min(null);
stream.max(null);
stream.count();
stream.anyMatch(null);
stream.allMatch(null);
stream.noneMatch(null);
stream.findFirst();
stream.findAny();
stream.iterator();
/**
* Short-circuiting --> 无穷和又穷一些约束下的一些操作
*/
stream.anyMatch(null);
stream.allMatch(null);
stream.noneMatch(null);
stream.findFirst();
stream.findAny();
stream.limit(0L); /**
* 自己生成流 : Stream.generate
*/
Random seed = new Random();
Supplier<Integer> random = seed::nextInt;
Stream.generate(random).limit(10).forEach(System.out::println);
//Another way
IntStream.generate(() -> (int) (System.nanoTime() % 100)).
limit(10).forEach(System.out::println);
}
}

最新文章

  1. 本地数据Store。Cookie,Session,Cache的理解。Timer类主要用于定时性、周期性任务 的触发。刷新Store,Panel
  2. mysqlroot密码忘记了,修改root密码
  3. http调接口
  4. Android 利用Service BroadcastReceiver实现小例子
  5. 各大Oj平台介绍
  6. 世界上最方便的SharePoint移动客户端--Rshare
  7. leetcode 第一题 Two Num java
  8. mvc验证码
  9. SlimFTPd, LFTP和FileZilla Client/Server
  10. 通过WriteProcessMemory改写进程的内存
  11. KVO的概述的使用
  12. SQL中采用Newtonsoft.Json处理json字符串
  13. Python的安装和详细配置(转)
  14. jquery实现ajax提交form表单的方法总结
  15. ES6中export及export default的区别
  16. 忘记oracle的sys密码该如何重置;附如何修改oracle数据库用户密码
  17. 记录Html+Css流程表格
  18. 编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。
  19. 谷歌浏览器运行Flash
  20. 微信小程序+微信管理后台+微信用户前台

热门文章

  1. GitForWindows工具集(GitBash命令行)
  2. Kerberos加密级别不支持的问题
  3. Kafka基础教程(二):Kafka安装
  4. Linux 安装并启用 PHP-FPM
  5. ORACLE 之 按月循环执行操作
  6. js获取相邻节点的value值
  7. UVA 156 Ananagrams (STL multimap & set)
  8. Sentine熔断降级进阶
  9. 【视频解码性能对比】opencv + cuvid + gpu vs. ffmpeg + cpu
  10. WSL删除子系统后无法重装