1.1、体验Stream流

package com.itheima01;import java.util.ArrayList;public class StreamDemo {public static void main(String[] args) {
//       创建一个集合,存储姓名ArrayList<String> array=new ArrayList<>();array.add("张伯伦");array.add("梁朝伟");array.add("张继科");array.add("张浩");array.add("田云");array.add("老铁");array.add("老王");array.stream().filter(s->s.startsWith("张")).filter(s->s.length()>=3).forEach(s-> System.out.println("姓张的三个字的名字有:"+s));}}

1.2、Stream流的生成方式

Collection体系的集合可以使用默认方法stream()生成流
            default Stream<E>stream()
Map体系的集合间接的生成流
数组可以通过Stream接口的静态方法of(T...values)生成流

package com.itheima02;
/*
Collection体系的集合可以使用默认方法stream()生成流default Stream<E>stream()
Map体系的集合间接的生成流
数组可以通过Stream接口的静态方法of(T...values)生成流
*/import java.util.*;
import java.util.stream.Stream;public class StreamDemo {public static void main(String[] args) {
//        Collection体系的集合可以使用默认方法stream()生成流
//        default Stream<E>stream()List<String> list = new ArrayList<>();Stream<String> ListStream = list.stream();Set<String> set = new HashSet<>();Stream<String> setStream = set.stream();
//        Map体系的集合间接的生成流Map<String, Integer> map = new HashMap<String, Integer>();Set<String> keyset = map.keySet();Stream<String> keysetStream = keyset.stream();
//        Integer value = map.get(keyset);Collection<Integer> v = map.values();Stream<Integer> iStream = v.stream();Stream<String> keyStream = map.keySet().stream();Stream<Integer> vStream = map.values().stream();Set<Map.Entry<String, Integer>> entry = map.entrySet();Stream<Map.Entry<String, Integer>> entryStream = entry.stream();
//        数组可以通过Stream接口的静态方法of(T...values)生成流String[] strArray = {"hello", "world", "java"};Stream<String> strArrayStream=Stream.of(strArray);Stream<String> sStream=Stream.of("hello","world","java");}
}

Stream常见的方法:

limit()返回指定长度的流的元素

skip()

package com.itheima01;import java.util.ArrayList;public class StreamDemo {public static void main(String[] args) {
//       创建一个集合,存储姓名ArrayList<String> array=new ArrayList<>();array.add("张伯伦");array.add("梁朝伟");array.add("张继科");array.add("张浩");array.add("田云");array.add("老铁");array.add("老王");
//        array.stream().filter(s->s.startsWith("张")).filter(s->s.length()>=3).forEach(s-> System.out.println("姓张的三个字的名字有:"+s));
//        Stream<T> limit(long maxSize)返回此流中的元素组成的流,截取指定的参数个数的数据array.stream().limit(2).forEach(System.out::println);
//        Stream<T> skip(long n)跳过指定参数个数的数据,返回由该流的剩余元素组成的System.out.println("-------跳过指定参数个数的数据,返回由该流的剩余元素组成的-----");array.stream().skip(3).forEach(System.out::println);}}

1.3、Stream常见的中间操作方法

Stream<T> filter(Predicate predicate) 用于对流中的数据进行过滤

Predicate接口的中方法              boolean test(T t)对给定的参数进行判断,返回一个布尔值

Stream<T> limit(long maxSize)      返回此流中的元素组成的流,截取前指定参数个数的数据

Stream<T> skip(long n)         跳过指定参数个数的数据,返回由该流的剩余元素组成的流

static<T>Stream<T> concat(Stream a,Stream b)合并a和b两个流为一个流

Stream<T> distinct() 返回由该流的不同元素(根据Object.equals(Object))组成的流

Stream<T> sorted() 返回由此流的元素组成的流,根据自然顺序排序

Stream<T> sorted(Comparator Comparator) 返回由该流的元素组成的流,根据提供的Comparator进行排序

package com.itheima03;import java.util.ArrayList;
import java.util.stream.Stream;public class StreamDemo {public static void main(String[] args) {ArrayList<String> list=new ArrayList<>();list.add("科比");list.add("詹姆斯");list.add("杜兰特");list.add("欧文");list.add("哈登");list.add("乔治");list.add("小卡");list.add("库里");list.add("戴维斯");
//        使用filter()过滤
list.stream().filter(s->s.startsWith("小")).forEach(s->System.out.println(s));
//        需求1:截取4个数据组成一个流Stream<String> s1=list.stream().limit(4);
//        需求2:跳过2个数据组成一个流Stream<String> s2=list.stream().skip(2);System.out.println("————————————合并两个流——————————————————————");
//        需求3:合并需求1和需求2得到的流,并把结果在控制台输出
//        Stream.concat(s1,s2).forEach(System.out::println);
//        需求4:合并需求1和需求2得到的流,并把结果在控制台输出,要求字符串元素不能重复
Stream.concat(s1,s2).distinct().forEach(System.out::println);}
}
package com.itheima03;import java.util.ArrayList;
//Stream<T> sorted() 返回由此流的元素组成的流,根据自然顺序排序
//Stream<T> sorted(Comparator Comparator) 返回由该流的元素组成的流,根据提供的Comparator进行排序
public class StreamDemo02 {public static void main(String[] args) {ArrayList<String> list=new ArrayList<>();list.add("kobe");list.add("jans");list.add("rose");list.add("harden");list.add("ads");list.add("kill");list.add("cuer");
//        需求1:按照字母顺序把数据在控制台输出
//        list.stream().sorted().forEach(s->System.out.println(s));
//        list.stream().sorted().forEach(System.out::println);
//需求2:按照字符串长度把数据在控制台输出
//     字符串短的排前面   list.stream().sorted((s1,s2)->-s1.length()-s2.length()).forEach(System.out::println);list.stream().sorted((s1,s2) ->{int num=s1.length()-s2.length();int num2=num==0?s1.compareTo(s2):num;return num2;}).forEach(System.out::println);}
}

<R>Stream<R> map(Function mapper) 返回由给定函数应用于此流的元素的结果组成的流

Function接口中的方法                R apply(T t)

IntStream map ToInt(ToIntFunction tion mapper) 返回一个IntStream其中包含将给定函数应用于此流的元素结果

IntStream表示原始int流

ToIntFunction 接口中的方法      int applyAsInt(T value)

1.4、Stream流的常见终结操作

void forEach(Consumer action) 对此流的每个元素执行操作

Consumer接口的方法                void acceopt(T t)对给定的参数执行此操作

long count()返回此流中的元素数

package com.itheima03;import java.util.ArrayList;public class StreamDemo04 {public static void main(String[] args) {
//       创建一个集合,存储姓名ArrayList<String> array=new ArrayList<>();array.add("张伯伦");array.add("梁朝伟");array.add("张继科");array.add("张浩");array.add("田云");array.add("老铁");array.add("老王");
//需求1:把集合中元素在控制台输出long countZhangName = array.stream().filter(s -> s.startsWith("张")).count();System.out.println(countZhangName);}}

Stream流的学习相关推荐

  1. Stream 流 【学习笔记】Java 基础

    若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 写这篇博客旨在制作笔记,方便个人在线阅览,巩固知识,无其他用途. 学习视频 [黑马 Java 基础教程] ...

  2. java jdk8 Stream流操作学习

    Stream流有一些特性: Stream流不是一种数据结构,不保存数据,它只是在原数据集上定义了一组操作. 这些操作是惰性的,即每当访问到流中的一个元素,才会在此元素上执行这一系列操作. Stream ...

  3. Java基础学习总结(132)——Java8 Stream流操作学习总结

    传统的数据处理都是用循环来解决,而不是像搜索数据库那样有具体的搜索语句,而Java8的Stream提供了很好的方案,往往一行就搞定了,而且Stream还可以链式操作,一行代码实现多个循环的功能,代码风 ...

  4. Java - Stream流详解

    文章目录 前言 大家好,好久不见了,最近由于实训的影响导致拖更了,在更新这一次估计javaSE基本上就算是完结了,还有一些落下的后面也会补上的,下次见面就是数据结构了 尽情期待吧!那么就让我们步入St ...

  5. Java学习day08--方法引用和Stream流

    Java学习day08--方法引用和Stream流 方法引用和Stream流 方法引用 获取Collection.Map.数组流 Stream流的常用操作方法 方法引用和Stream流 1).流思想: ...

  6. Java函数式编程学习——Stream流

    目录 概述 案例数据准备 1. 常用操作 2. 中间操作 filter map distinct sorted limit skip flatMap 3. 终结操作 foreach count max ...

  7. Stream流学习记录

    1. 创建流 单列集合: 集合对象.stream() List<Author> authors =new ArrayList<>();Stream<Author> ...

  8. 【Java】函数式编程学习笔记——Stream流

    学习视频:https://www.bilibili.com/video/BV1Gh41187uR?p=1 (1)[Java]函数式编程学习笔记--Lambda表达式 (2)[Java]函数式编程学习笔 ...

  9. 学习Java8 Stream流,让我们更加便捷的操纵集合

    1. 概述 本篇文章会简略的介绍一下 Lambda 表达式,然后开启我们的正题 Java8 Stream 流,希望观众老爷们多多支持,并在评论区批评指正! Java8 的 Stream 流使用的是函数 ...

最新文章

  1. DNN 数据访问策略 (转)
  2. ie下提示SCRIPT1028:缺少标识符、字符串或数字
  3. flutter刷新页面_Flutter BottomNavigationBar切换会刷新当前页面解决方
  4. 《江湖X:汉家江湖》游戏论剑系统技术全解析
  5. Zookeeper系列四:Zookeeper实现分布式锁、Zookeeper实现配置中心
  6. Master HA源码解析
  7. 导出表结构_十分钟教你轻松掌握移动PE导出表,快来学习!
  8. Git+GitHub+SaltStack
  9. 全世界都误会我们了。。。。。。。。
  10. jquery ajax 方法及各参数详解
  11. 《特征值与特征向量》定义、意义及例子
  12. win102004优化_如何对Win10 2004进行优化设置?Win10优化技巧
  13. (HTTP 503) (Request-ID: req-4f56de6f-d29c-4c44-aed3-e6ef8253384a)
  14. 梯度下降及具体计算方式
  15. 远程工作:从300到300万,一个远程外包团队的发展历程和经验【转载】
  16. 几种数字传感器介绍(一)————温湿度传感器(HDC1080)
  17. STM32——继电器控制灯的开关
  18. 记录一次Oracle自动化测试工具 - OATS实战分享
  19. 程序员女朋友礼物python代码_@程序员,用 Python 给女朋友准备个儿童节礼物可好?...
  20. iOS开发-改变图片的颜色

热门文章

  1. 百度小程序怎么添加到主屏幕将百度小程序放到手机桌面?
  2. android版本兼容API24,Android 7.0 (API 24) 适配
  3. 基于pytorch下用LSTM做股票预测——超详细
  4. 利用python识别身份证号后获取年龄和性别信息
  5. 电信物联网开放平台_NB-IoT业务对接 Java 后台、Android 前端已完成预研
  6. mysql从5.7平滑升级到8.0.27
  7. HTTP 错误 404.3 – Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
  8. 1276. 不浪费原料的汉堡制作方案(Medium)
  9. 超好用的Server酱,推送微信消息
  10. Android手机步数怎么统计的,手机中运动步数是如何计算的?(15个回答)