package stream01;import java.util.ArrayList;
import java.util.stream.Stream;/*** 使用Stream流的方式完成过滤操作*  1:list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).forEach(System.out::println);*  2:直接阅读代码的字面意思即可完美展示无关逻辑方式的语义:生成流、过滤姓张、过滤长度为3、逐一打印*  3:Stream流把真正的函数式编程风格引入到Java中*/public class stream01 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>();list.add("林青霞");list.add("张三");list.add("李四");list.add("张明明");list.add("孙悟空");list.add("张无忌");//把集合中所有以张开头的元素存储到一个新的集合中ArrayList<String> zhangList = new ArrayList<String>();for(String s : list){if(s.startsWith("张")){zhangList.add(s);}}//把张开头的集合中长度为3的元素存储到一个新的集合ArrayList<String> threeList = new ArrayList<String>();for(String s : zhangList){if(s.length() == 3){threeList.add(s);}}//遍历上面得到的集合for(String s : threeList){System.out.println(s);}System.out.println("============");//Stream 流来改进list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).forEach(s -> System.out.println(s));//Stream+方法应用来改进list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).forEach(System.out::println);//取前3个数据并在控制台输出list.stream().limit(3).forEach(System.out::println);//跳过3个元素,把剩下的元素在控制台输出list.stream().skip(3).forEach(System.out::println);//跳过2个元素,并把剩下的元素中前2个在控制台输出list.stream().skip(2).limit(2).forEach(System.out::println);Stream<String> s1 = list.stream().limit(4);Stream<String> s2 = list.stream().skip(2);//合并上面的2个流  并把合并后的结果在控制台输出Stream.concat(s1,s2).forEach(System.out::println);//合并上面的2个流  并把合并后的结果在控制台输出 去掉重复元素Stream.concat(s1,s2).distinct().forEach(System.out::println);//按照字母顺序把数据在控制台输出list.stream().sorted().forEach(System.out::println);//按照字符串长度把数据在控制台输出list.stream().sorted((s11,s22)->s11.length()-s22.length()).forEach(System.out::println);//按照字符串长度把数据在控制台输出,长度一样的按字幕顺序排list.stream().sorted((s3,s4)->{int num = s3.length()-s4.length();int num2 = num==0?s3.compareTo(s4):num;return num2;}).forEach(System.out::println);}
}
  • Collection 体系的集合可以使用默认的stream()生成流
  • Map体系的集合间接生成流
  • 数组可以通过Stream接口的静态方法of(T…values)生成流
package stream01;import java.util.*;
import java.util.stream.Stream;/***  Collection 体系的集合可以使用默认的stream()生成流*  Map体系的集合间接生成流*  数组可以通过Stream接口的静态方法of(T...values)生成流*/
public class stream02 {public static void main(String[] args) {/** Collection 体系的集合可以使用默认的stream()生成流*/List<String> list = new ArrayList<>();Stream<String> listStream = list.stream();Set<String> set = new HashSet<String>();Stream<String> setStream = set.stream();/** Map体系的集合间接生成流*/Map<String,Integer> map = new HashMap<String, Integer>();Stream<String> keyStream = map.keySet().stream();Stream<Integer> valueStream = map.values().stream();Stream<Map.Entry<String,Integer>> entryStream = map.entrySet().stream();/** 数组可以通过Stream接口的静态方法of(T...values)生成流*/String[] strArray = {"hello","world","java"};Stream<String> strArrayStream = Stream.of(strArray);Stream<String> strArrayStream2 = Stream.of("hello","world","java");Stream<Integer> integerStream = Stream.of(10,20,30);}
}

二、使用Stream流的方式完成过滤操作相关推荐

  1. 使用Stream流的方式,遍历集合,对集合中的数据进行过滤

    Stream的更优写法 下面来看一下借助Java 8的Stream API,什么才叫优雅: package com.learn.demo01.Stream;import java.util.Array ...

  2. Java复习第11天---11.2---Java8新特性---Stream流获取方式和常用方法1

    Java复习第11天---11.2---Java8新特性---Stream流获取方式和常用方法1 目录 文章目录 1.Stream流的2中获取方式 1.1.集合的stream方法 1.2.Stream ...

  3. JAVA学习-Stream流的生成、中间操作、终结、收集操作

    Stream流的使用-用于数据集的过滤.映射 1.生成流的操作:通过数据源.集合生成流list.stream() 2.中间操作:一个流可以跟随零个或多个中间操作,其目的主要是打开流,做出某种程度的数据 ...

  4. java 1.8stream_java jdk1.8 使用stream流进行list 分组归类操作

    我就废话不多说了,大家还是直接看代码吧~ import com.alibaba.fastjson.JSON; import java.util.ArrayList; import java.util. ...

  5. 跟我学 Java 8 新特性之 Stream 流(三)缩减操作

    转载自   跟我学 Java 8 新特性之 Stream 流(三)缩减操作 和前面两篇文章一起服用,效果会更佳.通过对流API的基础体验Demo和关键知识点的讲解,相信大家对流API都有一定的认识了, ...

  6. Java中收集Stream流的方式

    收集Stream流 Stream流的收集操作: 收集Stream流的含义:就是把Stream流操作后的结果数据转回到集合或者数组中去. Stream流:方便操作集合/数组的手段. 集合/数组:才是开发 ...

  7. 两种获取Stream流的方式

    备注:"Stream流"其实是一个集合元素的函数模型,它并不是集合,也不是数据结构,其本身并不存储任何 元素(或其地址值). Stream(流)是一个来自数据源的元素队列 元素是特 ...

  8. jdk8新特性(二)Stream流式操作

    1.流处理过程 2.Stream流式分类 Stream,IntStream,LongStream,DoubleStream 3.操作符 Stream 的一系列操作必须要使用终止操作,否者整个数据流是不 ...

  9. Stream流的方式遍历map,筛选数据

    文章目录 背景 解决方法 代码实战 产品类: 需要筛选的map集合: 结果分析: 背景 有一产品类,包含id,产品编号,产品金额.在代码中采用map方式去存储该产品,map的key是从数据库中查询出来 ...

最新文章

  1. 2022-2028年中国四氟化碳产业研究及前瞻分析报告
  2. 开发日记-20190328 关键词 利用eolinker一键快速生成API接口文档
  3. 滴滴为啥值3600亿?看它的数据中台就知道了
  4. java手机号判断运营商_用Java对手机号所属运营商进行判断
  5. 【Java】五种常见排序之-----------冒泡排序
  6. 51nod1584加权约数和
  7. ajax传值controller怎么写,关于ajax请求Controller传值问题详细记录
  8. KVM之五:KVM日常管理常用命令
  9. 论文笔记_S2D.55_2019_SLAM综述_Huang B. A Survey of Simultaneous Localization and Mapping
  10. Matlab简单教程:条件分支
  11. 爬取某家网二手房数据(详细教程)
  12. java中如何配置前端项目,将后端或前端项目部署到云服务器上
  13. centos 安装SDCC编译器
  14. 第12届蓝桥杯国赛真题剖析-2021年5月29日Scratch编程初中级组
  15. 设计模式——行为型模式_观察者模式/发布-订阅模式
  16. 洛谷 P2895 [USACO08FEB]Meteor Shower S C++ BFS 广搜
  17. 【初等数论】【转载】夜深人静写算法(五) - 初等数论
  18. SQL Server 数据库基本操作入门篇【1】
  19. Mathtype has detected an error inAutoExcelCls.Main:文件未找到:MathPage.WLL.Please save your document and
  20. C语言 :学习动态内存分配

热门文章

  1. 白杨SEO:如何用百度好看视频排名优化来做视频营销?
  2. win10解决IE浏览器安装不上的问题(卸载依然显示不能安装)
  3. Axure8元件库.rplib(Iaxure)
  4. 偷偷告诉你中国小姐姐的真实Size!!
  5. nest定义路由和路由失效的问题
  6. Java版本微信授权登录(测试版)
  7. 变量foo 和 bar的由来
  8. 纯文本、富文本、超文本
  9. Linux网络知识--DHCP服务(理论部分)
  10. 从音视频技术看AI的机会和挑战