1.Stream流

Stream流一般与lambda表达式一起写,同时也可以与方法引用一起用

public class Stream1 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>();list.add("Asaa");list.add("Acds");list.add("svd");list.add("szvdz");list.add("Abc");list.add("Acf");//用Stream流筛选出首字母为A,且长度为3的字符串list.stream().filter(s->s.startsWith("A")).filter(s -> s.length()==3).forEach(System.out::println);}
}

2.Stream流的生成方式

public class Stream2 {public static void main(String[] args) {//Collection体系的集合可以使用默认的方法stream()生成流ArrayList<Integer> list = new ArrayList<Integer>();Stream<Integer>  arrayStream = list.stream();Set<String> set = new HashSet<String>();Stream<String> setStream = set.stream();//Map体系的集合间接的生成流Map<Integer,String> map = new HashMap<Integer, String>();Stream<Integer> keyStream= map.keySet().stream();Stream<String> valueString= map.values().stream();Stream<Map.Entry<Integer,String>> entryStream = map.entrySet().stream();//整体转为Stream//数组可以通过Stream的静态方法(of(T...value))生成流String[] s = {"1","2","3","4"};Stream<String> ss = Stream.of(s);Stream<Integer> i = Stream.of(1,2,4,4,5);}
}

2.Stream流的中间操作

public class Stream1 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>();list.add("Asaa");list.add("Acds");list.add("svd");list.add("szvdz");list.add("Abc");list.add("Acf");//用Stream流筛选出首字母为A,且长度为3的字符串list.stream().filter(s->s.startsWith("A")).filter(s -> s.length()==3).forEach(System.out::println);System.out.println("----------");//用Stream流取出前3个数据并在控制台输出list.stream().limit(3).forEach(System.out::println);System.out.println("----------");//用Stream流跳过前3个数据list.stream().skip(3).forEach(System.out::println);}
}

**注意:**只能存在一个concat

public class Stream1 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>();list.add("Asaa");list.add("Acf");list.add("svd");list.add("szvdz");list.add("Adf");list.add("Acf");//用Stream流取出前3个数据并在控制台输出Stream s1 = list.stream().limit(3);//用Stream流跳过前3个数据Stream s2 = list.stream().skip(3);//用Stream连接两个流//Stream.concat(s1,s2).forEach(System.out::println);//用Stream连接两个流,且其中数据不重复Stream.concat(s1,s2).distinct().forEach(System.out::println);}
}

排序:

public class Stream3 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>();list.add("Asaa");list.add("ccf");list.add("bvd");list.add("szvdz");list.add("gdf");list.add("ecf");//自然排序list.stream().sorted().forEach(System.out::println);System.out.println("--------");//按照长度排序list.stream().sorted((s1,s2)->s1.length()-s2.length()).forEach(System.out::println);System.out.println("--------");//按照长度排序,且如果长度相同按照字母顺序排list.stream().sorted((s1,s2)->{int num1 = s1.length()-s2.length();int num2 = num1==0? s1.compareTo(s2):num1;return num2;}).forEach(System.out::println);}
}

map方法:

注意:map方法与filter的区别,这里filter是做筛选,而map修改了流内部的数据

public class StreamMap {public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>();list.add("2");list.add("6");list.add("1");list.add("12");list.add("35");list.add("45");//用map转换数据类型list.stream().map(Integer::parseInt).forEach(System.out::println);//用mapToInt转换数据类型list.stream().mapToInt(Integer::parseInt).forEach(System.out::println);//用mapToInt能将其转化为Integer类型从而使用Integer的方法System.out.println(list.stream().mapToInt(Integer::parseInt).sum());}
}

3.Stream流的终结操作

public class StreamEnd {public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>();list.add("2");list.add("6");list.add("1");list.add("12");list.add("35");list.add("45");//用forEach对流中的每个数进行操作,无返回list.stream().map(Integer::parseInt).forEach(System.out::println);System.out.println("--------------");//用count返回流中元素个数,返回long类型的数System.out.println(list.stream().map(Integer::parseInt).count());}
}

4.Stream流收集操作

public class StreamEnd {public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>();list.add("2");list.add("6");list.add("1");list.add("12");list.add("35");list.add("45");Stream<String> s = list.stream();//将Stream转为listList<String> list1 = s.collect(Collectors.toList());//将String转为setStream<String> s1 = list1.stream();// Set<String> set = s1.collect(Collectors.toSet());String[] s2 = {"Bala,20","Dela,33","Liufu,12"};//将其转为StreamStream<String> s1stream = Stream.of(s2);//将其转化为Maps1stream.collect(Collectors.toMap(s3->s3.split(",")[0],s3->Integer.parseInt(s3.split(",")[1])));}
}

Java基础——Stream相关推荐

  1. [Java基础]Stream流的收集操作

    代码如下: package CollectPack;import java.util.*; import java.util.stream.Collectors; import java.util.s ...

  2. [Java基础]Stream流综合练习

    代码如下: package StreamDemoFinal;public class Actor {private String name;public Actor(String name) {thi ...

  3. [Java基础]Stream流的常见中间操作方法

    代码如下: package StreamTest;import java.util.ArrayList;public class StreamDemo02 {public static void ma ...

  4. [Java基础]Stream流的常见生成方式

    1.Collection体系的集合可以使用默认方法stream()生成流 default Stream< E > stream() 代码如下: package StreamTest;imp ...

  5. [Java基础]Stream流终结操作之forEachcount

    代码如下: package StreamTest;import java.util.ArrayList;public class StreamDemo06 {public static void ma ...

  6. 2021最新 JDK17 之 JAVA基础 Stream 流

    目录 1.什么是Stream 2.流的构成与转换 3.流的操作 4.并行处理 5.Collector 1.什么是Stream Java 8之前的集合类库主要依赖于 外部迭代(external iter ...

  7. Java基础 Stream流方法引用异常文件

    Stream流 引例 需求:按照下面要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素 1. 把所有以"曹"开头的元素存储到新集合中 2. 把曹开头,长度为3的元素存储到新 ...

  8. Java基础(十一) Stream I/O and Files

    Java基础(十一) Stream I/O and Files 1. 流的概念 程序的主要任务是操纵数据.在Java中,把一组有序的数据序列称为流. 依据操作的方向,能够把流分为输入流和输出流两种.程 ...

  9. JAVA基础知识|lambda与stream

    lambda与stream是java8中比较重要两个新特性,lambda表达式采用一种简洁的语法定义代码块,允许我们将行为传递到函数中.之前我们想将行为传递到函数中,仅有的选择是使用匿名内部类,现在我 ...

最新文章

  1. header中Content-Disposition的作用与使用方法
  2. php性能提升5倍的秘诀,停机维护时长缩短5倍,全靠这3个秘诀
  3. Jsp 和 Servlet 有什么不同?
  4. LinkedHashMap实现LRU缓存算法
  5. Christopher G. Atkeson 简介
  6. UI5应用如果出现白屏但是没有任何错误消息打印出来,应该如何处理
  7. 线程池和线程详细教程
  8. pandownload 卢本伟_PanDownload复活了!60MB/s!附下载地址
  9. c++ 智能指针用法详解
  10. java载屁股针_以前常打的“屁股针”,为何现在很少见了?医生告诉你真实原因...
  11. Java实训项目2:GUI学生信息管理系统 - 系统概述
  12. 解决thrift: ···No such file or directory问题
  13. Struts2中的异常处理
  14. 分布式文件存储FastDFS之基础知识篇
  15. qi无线充电协议_iOS 13.1封杀第三方无线快充:疑似苹果无线充电私有协议来了...
  16. 什么是IAST(交互式应用安全测试)?
  17. Qt三方库开发技术:二维码生成、识别以及条码识别
  18. 飞秋FeiQ2013特色功能列表
  19. RTMP,RTSP,HLS 流服务器
  20. 实现163邮箱发送邮件功能

热门文章

  1. python实现动态壁纸_流弊了!竟然用Python做一个炫酷的小姐姐动态壁纸
  2. 制造企业如何从0到1进行信息化建设?
  3. Druid源码解析之Segment
  4. Java - 什么是IoC和DI?DI是如何实现的?
  5. 肉鸡的俘虏!一个菜鸟木马黑客的自白
  6. VB初学者实例50例
  7. IntelliJ IDEA File Header
  8. linux repo
  9. 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(1)- 环境搭建(Python2.7.14 + pySerial3.4 + wxPython4.0.3)...
  10. 软件项目开发中的三个“不应做”事项