集合对象.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映射

如果需要将流中的元素映射到另一个流中,可以使用 map 方法。
<R> Stream<R> map(Function<? super T, ? extends R> mapper)
Function是一个函数式接口,他有一个R apply(T t);方法,可以把T对象转化成R对象。这个就叫做映射。
  • 统计个数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.toList())  

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的更多相关文章

  1. Java的Stream流式操作

    前言 最近在实习,在公司看到前辈的一些代码,发现有很多值得我学习的地方,其中有一部分就是对集合使用Stream流式操作,觉得很优美且方便.所以学习一下Stream流,在这里记录一下. Stream是什 ...

  2. Java中Stream流相关介绍

    什么是Stream? Stream是JDK8 API的新成员,它允许以声明性方式处理数据集合 特点 代码简洁: 函数式编程写出的代码简洁且意图明确,使用stream接口让你从此告别for循环 多核友好 ...

  3. Java 8 Stream流编程学习

    本文是自己学习菜鸟教程中总结的笔记,用于快速找代码,完整的文档见菜鸟教程:Java 8 Stream Stream 使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达 ...

  4. Java_lambda表达式之"stream流学习,Map学习,collect学习,Conllectors工具类学习"

    Lambda表达式学习 对List<Integer> userIdList = UserList.stream().map(User::getUserId).collect(Collect ...

  5. 简洁方便的集合处理——Java 8 stream流

    背景 java 8已经发行好几年了,前段时间java 12也已经问世,但平时的工作中,很多项目的环境还停留在java1.7中.而且java8的很多新特性都是革命性的,比如各种集合的优化.lambda表 ...

  6. 获取单列集合,双列集合,数组的Stream流对象以及简单操作

    获取流对象 获取单列集合,双列集合,数组的流对象 单列集合获取流对象: 1.java.util.Collection接口中加入了default方法stream()获取流对象,因此其所有实现类均可通过此 ...

  7. java基础-IO流对象之Properties集合

    java基础-IO流对象之Properties集合 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Properties集合的特点 Properties类表示了一个持久的属性集. ...

  8. Java基础-IO流对象之字节流(Stream)

    Java基础-IO流对象之字节流(Stream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在前面我分享的笔记中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现 ...

  9. 【重学Java】Stream流

    Stream流 体验Stream流[理解] 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把&q ...

随机推荐

  1. jvm的小练习

    代码如下: public static void main(String[] args) { byte[] array= new byte[1024*1024]; array=new byte[102 ...

  2. 洛谷 P5391 - [Cnoi2019]青染之心

    洛谷题面传送门 介绍一种假做法,期望复杂度应该比较优秀,但可以卡掉( 首先这个问题显然严格强于只有添加元素的情况对吧,而只有添加元素的情况就是一个普通的背包,而只有插入操作的版本复杂度就已经达到了 \ ...

  3. 洛谷 P5400 - [CTS2019]随机立方体(组合数学+二项式反演)

    洛谷题面传送门 二项式反演好题. 首先看到"恰好 \(k\) 个极大值点",我们可以套路地想到二项式反演,具体来说我们记 \(f_i\) 为钦定 \(i\) 个点为极大值点的方案数 ...

  4. 洛谷 P6570 - [NOI Online #3 提高组] 优秀子序列(集合幂级数+多项式)

    洛谷题面传送门 首先 \(3^n\) 的做法就不多说了,相信对于会状压 dp+会枚举子集的同学来说不算困难(暴论),因此这篇博客将着重讲解 \(2^nn^2\) 的做法. 首先如果我们把每个 \(a_ ...

  5. SAM 感性瞎扯

    SAM 做题笔记. 这里是 SAM 感性瞎扯. 最近学了后缀自动机(Suffix_Automaton,SAM),深感其巧妙之处,故写文以记之. 部分文字与图片来源于 OI-Wiki,hihoCoder ...

  6. Oracle、MySQL关机操作步骤

    一.Oracle数据库单机关机(eg:LEAP系统) 先关闭使用数据库的应用系统,再关闭数据库 关闭数据库执行以下命令 1.关闭Oracle数据库监听器:(使用操作系统下管理Oracle的账户,关闭监 ...

  7. Python基础之字典内置方法

    目录 1. 字典 1.1 字典的作用 1.2 创建和使用字典 1.2.1 dict类 1.2.2 基本的字典操作 1.2.3 字典方法 1. 字典 映射:可以通过名称来访问其各个值的数据结构. 字典是 ...

  8. 1.TwoSum-Leetcode

    #include<iostream> #include<algorithm> #include<map> using namespace std; class So ...

  9. 02 eclipse中配置Web项目(含eclipse基本配置和Tomcat的配置)

    eclipse搭建web项目 一.Eclipse基本配置 找到首选项: (一)配置编码 (二)配置字体 (三)配置jdk (四)配置Tomcat 二.Tomcat配置 三.切换视图,检查Tomcat ...

  10. 学习java的第十天

    一.今日收获 1.java完全学习手册第二章2.9程序流程控制中的选择结构与顺序结构的例题 2.观看哔哩哔哩上的教学视频 二.今日问题 1.例题的问题不大,需要注意大小写,新的语句记忆不牢 2.哔哩哔 ...