Java8 Stream 的一些操作和介绍
原创:转载需注明原创地址 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);
}
}
Java8 Stream 的一些操作和介绍的更多相关文章
- Java8——Stream流式操作的一点小总结
我发现,自从我学了Stream流式操作之后,工作中使用到的频率还是挺高的,因为stream配合着lambda表达式或者双冒号(::)使用真的是优雅到了极致!今天就简单分(搬)享(运)一下我对strea ...
- JAVA8 Stream集合操作:中间方法和完结方法
StreamLambda为java8带了闭包,这一特性在集合操作中尤为重要:java8中支持对集合对象的stream进行函数式操作,此外,stream api也被集成进了collection api, ...
- Java8中的Stream流式操作 - 入门篇
作者:汤圆 个人博客:javalover.cc 前言 之前总是朋友朋友的叫,感觉有套近乎的嫌疑,所以后面还是给大家改个称呼吧 因为大家是来看东西的,所以暂且叫做官人吧(灵感来自于民间流传的四大名著之一 ...
- Java8 如何进行stream reduce,collection操作
Java8 如何进行stream reduce,collection操作 2014-07-16 16:42 佚名 oschina 字号:T | T 在java8 JDK包含许多聚合操作(如平均值,总和 ...
- Java8 Stream中间操作使用详解
前面两篇简单的介绍了Stream以及如何创建Stream,本篇就给大家说说stream有哪些用途,以及具体怎样使用. 再次介绍Stream Stream 使用一种类似用于SQL 语句从数据库查询数据的 ...
- Java8 Stream终端操作使用详解
话不多说,自己挖的坑自己要填完,今天就给大家讲完Java8中Stream的终端操作使用详解.Stream流的终端操作主要有以下几种,我们来一一讲解. forEach() forEachOrdered( ...
- java8 Stream的实现原理 (从零开始实现一个stream流)
1.Stream 流的介绍 1.1 java8 stream介绍 java8新增了stream流的特性,能够让用户以函数式的方式.更为简单的操纵集合等数据结构,并实现了用户无感知的并行计算. 1.2 ...
- Java8 Stream语法详解 2
1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...
- Java8 stream学习
Java8初体验(二)Stream语法详解 Java 8 flatMap示例 第一个Stream Demo IDEA里面写Stream有个坑 虽然java文件中没错,但是但编译的时候还是报错了, In ...
随机推荐
- iNeuOS工业互联网操作系统,增加DTU与平台实时交互的应用场景
目 录 1. 概述... 2 2. 平台演示... 2 3. 硬件设置... 2 4. 应用过程... 3 1. 概述 DTU向下连接硬件传感器 ...
- PostgresSQL客户端pgAdmin4使用
1.说明 pgAdmin 4是一款为PostgreSQL设计的可靠和全面的数据库设计和管理软件, 它允许您连接到特定的数据库,创建表和运行各种从简单到复杂的SQL语句. 它支持的操作系统包括Linux ...
- ElasticSearch+Kibana安装部署
在安装ElasticSearch时遇到了很多坑,所以在这里做个笔记记录一下. 首先我考虑的是使用docker进行部署,结果发现虚拟机直接内存溢出,我也是无解了,也就是说使用docker部署还得注意容器 ...
- nano 编辑器快速入门
# 打开或新建一个文件 $ nano tmp.txt # 常用组合按键 ^G:获取帮助 ^X:退出,如果文件有改定会提示是否保存 ^O:保存文件内容 ^R:读取其他文件的内容,放入到当前文件中 ^W: ...
- svn创建多个版本库
mkdir /pangbing cd /pangbing/ svnadmin create 1 svnadmin create 2 svnadmin create3 启动时候这样启动 svnserve ...
- js 盒子逐渐缓慢移动效果
注释:可以用于盒子弹出,收回效果,比如:某东的产品详情页,侧边有购物车.优惠卷等,鼠标经过弹出效果 可以看这个网址使用案例:https://www.cnblogs.com/jq-growup/p/15 ...
- CF612E Square Root of Permutation
题目分析 我们首先模拟一下题意 假设有一个 \(q _1\) \(p\) \(a_1\) \(a_x\) \(a_{a_1}\) \(a_{a_x}\) \(q\) \(x\) \(a_1\) \(a ...
- 自动化怎么判断anndroid.listview是否包含某个指定的元素或内容
做自动化的时候,定位元素时,会发现整屏的内容都是放在一个列表,在多层嵌套其他控件组成 如柠檬班的题库,里面会有很多分类 那么在做自动化的时候,怎么判断页面有没有包含指定的分类呢? 整体思路: 1.找到 ...
- Python_元类
什么是元类 我们知道,实例对象是由类创建的,那么类又是由什么创建的呢? 答案就是元类. 元类基本不会用到,但是就算不用,也应该去熟悉一下概念. 理解类也是对象 在大多数编程语言中,类就是一组用来描述如 ...
- epoll实现原理
作者:蓝形参链接:https://www.zhihu.com/question/20122137/answer/14049112来源:知乎 首先我们来定义流的概念,一个流可以是文件,socket,pi ...