1. 获取Stream流

 1. 所有的Collection<T>集合都有对应的Stream();2. 可以通过Stream类中的static Stream of()获取static Stream<T> of(T... t);static Stream<T> of(T t);
package com.qfedu.first.streamget;import java.util.*;
import java.util.stream.Stream;/*** Create By 刘珈玮 on 2020/3/12.*/
public class Demo1 {public static void main(String[] args) {// List接口获取对应的Stream流类对象ArrayList<String> list = new ArrayList<>();// 根据list保存元素的类型来约束对应的Stream流对象操作所需类型Stream<String> stream = list.stream();// 通过Set集合获取对应Stream流对象HashSet<String> set = new HashSet<>();Stream<String> stream1 = set.stream();HashMap<String, String> map = new HashMap<>();// Map双边队列中所有键对应的Set集合Set<String> keySet = map.keySet();Stream<String> stream2 = keySet.stream();// Map双边队列中所有value对应的Collection集合Collection<String> values = map.values();Stream<String> stream3 = values.stream();Set<Map.Entry<String, String>> entrySet = map.entrySet();Stream<Map.Entry<String, String>> stream4 = entrySet.stream();Stream<String> stringStream = Stream.of("灵台方寸山", "斜月三星洞");String[] arr = {"为天地立心", "为生民立命", "为往圣继绝学", "为万世开太平"};Stream<String> arrStream = Stream.of(arr);// 不建议这样使用ArrayList<String> list1 = new ArrayList<>();Stream<ArrayList<String>> list11 = Stream.of(list1);}
}

2. foreach方法

void foreach(Consumer<? super T> action);
/*
终结方法:需要一个Consumer接口进行操作处理,消耗一个数据Consumer接口是一个【函数式接口】那就可以使用Lambda表达式Consumer接口中方法是void accept(T t);
*/
package com.qfedu.first.streamfunction;import org.w3c.dom.ls.LSOutput;import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Stream;/*** Create By 刘珈玮 on 2020/3/12.*/
public class Demo1 {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("111");list.add("2222");list.add("3333");list.add("4444");Stream<String> stream = list.stream();stream.forEach(new Consumer<String>() {@Overridepublic void accept(String string) {System.out.println(string);}});stream.forEach(string -> System.out.println(string));stream.forEach(System.out::println);}
}

3. filter方法

Stream<T> filter(Predicate<? super T> condition);
/*filter是过滤方式,需要的参数是Predicate接口,Predicate是一个函数式接口,可以直接使用Lambda表达运行。这里返回值类型是Stream类对象,是经过过滤之后的Stream类型,可以进行链式操作Predicate接口中需要实现的方法boolean test(T t);
*/
package com.qfedu.first.streamfunction;import java.util.ArrayList;
import java.util.stream.Stream;/*** Create By 刘珈玮 on 2020/3/12.*/
public class Demo2 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("111");list.add("222");list.add("33");list.add("4444");Stream<String> stringStream = list.stream().filter(s -> s.length() >= 3);stringStream.forEach(System.out::println);}
}

4. map方法

<R> Stream<R> map(Function<? super T, ? super R> fun);
/*
类型转换操作,得到的一个转换之后数据类型的Stream流对象
这里需要的参数是Functtion函数式接口,R apply(T t);T类型的数据转换成R类型数据
*/
package com.qfedu.first.streamfunction;import java.util.ArrayList;
import java.util.stream.Stream;/*** Create By 刘珈玮 on 2020/3/12.*/
public class Demo3 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("1, ljw, 22");list.add("2, lzw, 36");list.add("3, lq, 46");list.add("4, lb, 56");list.add("5, fsc, 66");list.add("6, zwj, 76");System.out.println(list);Stream<Person> personStream = list.stream().map(s -> {String[] split = s.split(",");Person person = new Person();person.setId(Integer.parseInt(split[0]));person.setName(split[1]);person.setAge(Integer.parseInt(split[2]));return person;});personStream.forEach(System.out::println);}
}

5. count方法

long count();
/*
返回当前Stream流对象中有多少个元素
类似有Collection接口下的size(). String的length();
【终结方法】一旦执行Stream流对象被关闭
*/
package com.qfedu.first.streamfunction;import java.util.ArrayList;/*** Create By 刘珈玮 on 2020/3/12.*/
public class Demo4 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("111");list.add("222");list.add("33");list.add("4444");long count = list.stream().filter(s -> s.length() >= 3).count();System.out.println(count);}
}

6. limit方法

Stream<T> limit(long maxSize);
/*
对于当前Stream流对象操作的数据进行限制操作,限制个数到maxSize
例如:Stream流中保存的有10个元素,limit 5 ==> 前五个元素
*/
package com.qfedu.first.streamfunction;import java.util.ArrayList;
import java.util.stream.Stream;/*** Create By 刘珈玮 on 2020/3/12.*/
public class Demo5 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("11");list.add("22");list.add("33");list.add("444");list.add("55");list.add("6666");Stream<String> stream = list.stream();stream.limit(5).forEach(System.out::println);}
}

7. skip方法

Stream<T> skip(long n);
/*
返回值依然是一个Stream流对象,这里跳过当前Stream流对象前n个元素
*/
package com.qfedu.first.streamfunction;import java.util.ArrayList;/*** Create By 刘珈玮 on 2020/3/12.*/
public class Demo6 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("11");list.add("22");list.add("3333");list.add("4444");list.add("555555");list.add("66666");list.stream().skip(2).forEach(System.out::println);}
}

8. concat方法

static Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)
/*
拼接两个Stream流对象,是一个静态方法,得到新的Stream流对象
*/
package com.qfedu.first.streamfunction;import java.util.ArrayList;
import java.util.stream.Stream;/*** Create By 刘珈玮 on 2020/3/12.*/
public class Demo7 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("11");list.add("22");list.add("33");list.add("444");list.add("55");list.add("6666");ArrayList<String> list1 = new ArrayList<>();list.add("11");list.add("22");list.add("3333");list.add("4444");list.add("555555");list.add("66666");Stream<String> stream = list.stream();Stream<String> stream1 = list1.stream();Stream<String> concat = Stream.concat(stream, stream1);concat.forEach(System.out::println);}
}

Stream流常用方法相关推荐

  1. Java8特性 stream流常用方法

    Java8特性 stream流常用方法 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方 ...

  2. Java复习第11天---11.4---Java8新特性---Stream流常用方法3和综合案例

    Java复习第11天---11.4---Java8新特性---Stream流常用方法3和综合案例 目录 文章目录 1.count:计数-终结方法 2.limit:取前几个元素-延迟方法 3.skip: ...

  3. stream流常用方法_Java8-Stream关键知识点

    前言 上篇文章已经为大家简单的介绍了stream流API的常用操作,如果你只是看一看,没有动手敲一敲代码的话,那么我还是建议你动手敲代码,说一千,道一万,不如自己动手干一干,只有动起手来,你才能体会到 ...

  4. Stream流常用方法总结

    导读: 概括讲,可以将Stream流操作分为3种类型: 创建Stream --开始管道 Stream中间处理  --中间管道 终止Steam --终止管道 每个Stream管道操作类型都包含若干API ...

  5. stream流常用方法_Java8 中用法优雅的 Stream,怪不得我之前总是看不懂别人写的代码!...

    Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读 放大招,流如何简化代码 如果有一个需求,需要对数据库 ...

  6. Java8新特性 Stream流常用方法

    Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达 ...

  7. Java Stream 流常用方法 lambda 表达式实现交集、并集、差集、去重复并集等

    一般的javaList 交.并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的javaList对象,采用java8 lambda表达式流操作则可以不影响原始list对 ...

  8. Java8新特性 stream流常用方法

    Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达 ...

  9. stream流的常用方法

    演示类: package com;import lombok.Data;import java.math.BigDecimal;public class User {//姓名private Strin ...

最新文章

  1. boost::hana::empty用法的测试程序
  2. html不同平台,基于H5端自定义平台怎么使用和H5端不一样的index.html?
  3. 在过滤器中设置一个应用范围内的路径
  4. 已知一个掺杂了多个数字字符的中文名拼音,去掉所有数字字符之后,形式为“名”+空格+“姓”;并且名和姓的首字母大写,其他小写,要求输出姓名全拼,且全为小写。(后附详细样例说明)
  5. 一场关于Google不作恶信条的辩论会
  6. React-Native 之 GD (六)无数据情况处理
  7. SQL Server 2005 14420 14421错误
  8. Python 推导式(列表推导式,字典推导式,集合推导式)
  9. 机器学习实践笔记(三)时间序列数据预测
  10. (原创)攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)
  11. 树莓派挂载硬盘/U盘以及分区教程
  12. 值得收藏的103个中文字体下载
  13. 分布式定时任务解决方案
  14. Word:开机即启动Word程序(转)
  15. 医学图像论文要点记录
  16. 《地理信息系统导论》chapter 17 最小耗费路径分析和网络分析
  17. cad调了比例因子没反应_CAD入门学习之如何修改比例因子
  18. python工作任务流flow实时框架:prefect
  19. 台达编码器型号含义_台达光学式旋转编码器
  20. C语言经典题10道之古典问题: 兔子生兔问题

热门文章

  1. 微信红包生成器App遭腾讯起诉:被判赔偿75万元
  2. linux 分卷压缩与合并
  3. 皇冠采集模板php,ptcms4.2.8自动采集配置教程
  4. 倒计时软件/倒计时工具/倒计时器
  5. ib课程计算机科学内容,让人疑惑的ib课程体系的六大课程是指什么?
  6. crt1.o, crti.o, crtbegin.o, crtend.o, crtn.o
  7. JAVA GUI中的窗体清空和窗体关闭方法分析
  8. 和IDEA一样好用的go语言IDE:Goland
  9. 三本计算机专业就业状况,2021三本什么专业就业前景好
  10. 写给Python社群的第7课:用 Python 模块了不起呀?就是了不起