java 数据类型:Stream流 对象转换为集合collect(Collectors.toList()) ;常用方法count,limit,skip,concat,max,min
集合对象.stream() 获取流对象,对元素批处理(不改变原集合)
集合元素循环除了用for循环取出,还有更优雅的方式.forEach
示例List集合获取Stream对象进行元素批处理
import java.util.ArrayList;
import java.util.List; /**
* @ClassName ArrayListStreamExample
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/11.
*/
public class ArrayListStreamExample {
public static void main(String[] args) {
List<String> persons = new ArrayList<>();
persons.add("李一桐");
persons.add("刘亦菲");
persons.add("鞠婧祎");
persons.add("李易峰");
persons.add("李纯");
persons.add("李小璐");
persons.add("李健");
persons.add("李连杰");
//
persons.stream().filter(o -> o.startsWith("李")).filter(o -> o.length() >=3).forEach(System.out::println);
List<String> liPerson = new ArrayList<>();
persons.stream().filter(o -> o.startsWith("李")).filter(o -> o.length() >=3).forEach(o -> liPerson.add(o));
System.out.println(liPerson); // [李一桐, 李易峰, 李小璐, 李连杰]
}
}
常用方法:
Map映射
<R> Stream<R> map(Function<? super T, ? extends R> mapper)
- 统计个数Count
- 获取前几个Limit
- 跳过前几个Skip
- 组合concat
- 最大最小值
常用方法示例代码:
import java.util.stream.Stream; /**
* @ClassName StreamFuncExample
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/12.
*/
public class StreamFuncExample {
public static void main(String[] args) {
Stream.of(1,2,3).map(num ->num *2).forEach(System.out::println); //映射输出2、4、6
long count = Stream.of(1,3,4,5).count(); //统计个数
System.out.println(count);
Stream.of(1,2,3,4,5,6).limit(3).forEach(System.out::println);//前三个
Stream.of(1,2,3,4,5,6).skip(3).forEach(System.out::println);//跳过前三个
Stream<Integer> num = Stream.of(1,2,3);
Stream<String> person = Stream.of("张三","李四","王五");
Stream allStream = Stream.concat(num,person);
allStream.forEach(System.out::println); //1,2,3, 张三","李四","王五"
int max = Stream.of(1,2,3,4,5,6).max((num1, num2) -> num1 - num2).get(); //取最大
System.out.println(max); //6
}
}
Stream对象转换为集合
collect(Collectors.toSet())
collect(Collectors.toMap())
public class StreamCollectCollectorsXXX {
public static void main(String[] args) {
Stream<String> persons = Stream.of("张三","李四","王五");
// List<String> personList = persons.collect(Collectors.toList());
// Set<String> personSet = persons.collect(Collectors.toSet());
Map<String,Integer> personMap = persons.collect(Collectors.toMap( K ->K, K ->K.length()));
System.out.println(personMap);
}
}
java 数据类型:Stream流 对象转换为集合collect(Collectors.toList()) ;常用方法count,limit,skip,concat,max,min的更多相关文章
- Java的Stream流式操作
前言 最近在实习,在公司看到前辈的一些代码,发现有很多值得我学习的地方,其中有一部分就是对集合使用Stream流式操作,觉得很优美且方便.所以学习一下Stream流,在这里记录一下. Stream是什 ...
- Java中Stream流相关介绍
什么是Stream? Stream是JDK8 API的新成员,它允许以声明性方式处理数据集合 特点 代码简洁: 函数式编程写出的代码简洁且意图明确,使用stream接口让你从此告别for循环 多核友好 ...
- Java 8 Stream流编程学习
本文是自己学习菜鸟教程中总结的笔记,用于快速找代码,完整的文档见菜鸟教程:Java 8 Stream Stream 使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达 ...
- Java_lambda表达式之"stream流学习,Map学习,collect学习,Conllectors工具类学习"
Lambda表达式学习 对List<Integer> userIdList = UserList.stream().map(User::getUserId).collect(Collect ...
- 简洁方便的集合处理——Java 8 stream流
背景 java 8已经发行好几年了,前段时间java 12也已经问世,但平时的工作中,很多项目的环境还停留在java1.7中.而且java8的很多新特性都是革命性的,比如各种集合的优化.lambda表 ...
- 获取单列集合,双列集合,数组的Stream流对象以及简单操作
获取流对象 获取单列集合,双列集合,数组的流对象 单列集合获取流对象: 1.java.util.Collection接口中加入了default方法stream()获取流对象,因此其所有实现类均可通过此 ...
- java基础-IO流对象之Properties集合
java基础-IO流对象之Properties集合 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Properties集合的特点 Properties类表示了一个持久的属性集. ...
- Java基础-IO流对象之字节流(Stream)
Java基础-IO流对象之字节流(Stream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在前面我分享的笔记中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现 ...
- 【重学Java】Stream流
Stream流 体验Stream流[理解] 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把&q ...
随机推荐
- Python描述符以及Property方法的实现原理
Python描述符以及Property方法的实现原理 描述符的定义: 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实了__get__(),__set__(),__delete__()中 ...
- Python+selenium之弹窗
- JDK 动态代理与 CGLIB 动态代理,它俩真的不一样
摘要:一文带你搞懂JDK 动态代理与 CGLIB 动态代理 本文分享自华为云社区<一文带你搞懂JDK 动态代理与 CGLIB 动态代理>,作者: Code皮皮虾 . 两者有何区别 1.Jd ...
- CF1477A Nezzar and Board
考虑 \(2x - y\) 我们改为 \(x + (x - y)\) 是一个更好的形式. 我们可以表示一个数为\(x_i + \sum_{j,k}(x_j - x_k) = K\) 我们考虑移到 \( ...
- 洛谷 P4497 - [WC2011]拼点游戏(数据结构综合)
题面传送门 神仙 DS. 首先关于第一问可以轻松想到一个 DP,\(dp_{i,j}\) 表示考虑到第 \(i\) 位,这一位奇偶性为 \(j\) 的最大权值,时间复杂度 \(n^2q\),可以拿到 ...
- Tarjan 的一些板子
圆方树(会在两圆点间建方点): void tarjan(int u) { low[u] = dfn[u] = ++dfc, stk[++top] = u, num++; for (int v : G[ ...
- C++匿名函数的使用
c++匿名函数使用方法 1.匿名函数的使用 匿名函数的基本语法为: //[捕获列表](参数列表)->返回类型{函数体} int main() { auto Add = [](int a, int ...
- Nginx nginx: [emerg] using regex "\.php$" requires PCRE library 或 编译nginx错误:make[1]: *** [/pcre//Makefile] Error 127
nginx: [emerg] using regex "\.php$" requires PCRE library 或 编译nginx错误:make[1]: *** [/pcre ...
- PHP识别二维码(php-zbarcode)
PHP识别二维码(php-zbarcode) 标签: php二维码扩展 2015-11-06 17:12 609人阅读 评论(0) 收藏 举报 分类: PHP(1) Linux 版权声明:本文为博 ...
- 日常Java 2021/11/18
用idea实现Javaweb登录页面 <%-- Created by IntelliJ IDEA. User: Tefuir Date: 2021/11/18 Time: 18:14 To ch ...