forEach遍历

/*

forEach:该方法接收一个Consumer接口函数,将每一个流元素交给该函数处理

简单记:

forEach方法:用来遍历流中的数据

是一个终结方法,遍历之后就不能继续调用Stream流中的其他方法

*/

public class demo01Stream_ForEach {
public static void main(String[] args) {
//获取一个Stream流
Stream<String>stream= Stream.of("张三","李四","王五","赵六");
//使用Stream流的方法forEach对stream流中的数据遍历
stream.forEach((String name)->{
System.out.println(name);
});
}
}

filter过滤

/*

filter:用于对Stream流中的数据进行过滤

filter(Predicate<? super T>predicate)

filter方法的参数Predicate是一个函数式接口,可以使用lambda表达式

Predicate中的抽象方法

boolean test(T t)

*/

public class demo01Stream_filter {
public static void main(String[] args) {
//创建一个Stream流
Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六", "冯老七");
Stream<String> stream1 = stream.filter((String name) -> {
return name.startsWith("冯");
});
//遍历stream1
stream1.forEach((name)-> System.out.println(name));
}
}

Stream流属于管道流,只能被消费一次

第一个Stream流调用完毕方法,数据会流转到下一个流中

第一个流会关闭,不再被调用

map方法转换流

/*

将流中的元素映射到另一个流中,使用map方法

该接口需要一个Function函数式接口参数,可以将当前流中的T类型数据转换为另一种R类型的流

Function中的抽象方法:

R apply(T t)

*/

public class demoStream_map {
public static void main(String[] args) {
//获取一个String类型的stream流
Stream<String>stream = Stream.of("1","2","3","4");
//使用map方法,把字符串类型的整数,转换(映射)为Integer类型的整数
Stream<Integer> stream1 = stream.map((String s) -> {
return Integer.parseInt(s);
});
stream1.forEach((i)-> System.out.println(i));
}
}

count方法 统计个数

/*

count方法 用于统计Stream流中的元素个数

long count();

count方法是一个终结方法,返回值是一个long类型的整数

不能再调用Stream流其他方法

*/

public class demoStream_count {
public static void main(String[] args) {
ArrayList<Integer> list= new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
Stream<Integer> stream = list.stream();
long count = stream.count();
System.out.println(count);
}
}

limit截取元素

/*

limit:用于截取流中的元素

limit可以对流进行截取,只取用前n个

limit(long maxSize);

参数是一个long型,如果集合当前长度大于参数则进行截取,否则不进行操作

limit是一个延迟方法,可以继续使用Stream流方法

*/

public class demoStream_limit {
public static void main(String[] args) {
String[] arr= {"xxx","wwq","wqew","wewqewqe"};
Stream<String> stream = Stream.of(arr);
Stream<String> stream1 = stream.limit(2);
stream1.forEach((name)-> System.out.println(name));
}
}

skip方法跳过元素

/*

skip方法:用于跳过元素

skip(long n)

如果流的当前长度大于n,则跳过前n个,否则将会得到一个长度为0的空流

*/

public class demoStream_skip {
public static void main(String[] args) {
String[] arr= {"xxx","wwq","wqew","wewqewqe"};
Stream<String> stream = Stream.of(arr);
Stream<String> stream1 = stream.skip(2);
stream1.forEach((name)-> System.out.println(name));
}
}

concat方法合并流

/*

concat:用于把流组合到一起

如果有两个流,希望合并成为一个流,可以使用Stream接口的静态方法concat

*/

public class demoStream_concat {
public static void main(String[] args) {
Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六", "冯老七");
String[] arr= {"QWQ", "ERE", "TYT", "UIU", "OIO"};
Stream<String> stream1 = Stream.of(arr);
//合并
Stream<String> stream2 = Stream.concat(stream, stream1);
stream2.forEach((name)-> System.out.print(name+" "));
}
}

最后

欢迎关注公众号:前程有光,领取一线大厂Java面试题总结+各知识点学习思维导+一份300页pdf文档的Java核心知识点总结!

这些Stream流的常用方法你得记住,步骤简单不麻烦!的更多相关文章

  1. Stream流思想和常用方法

    一.IO流用于读写:Stream流用于处理数组和集合数据: 1.传统集合遍历: 2.使用Stream流的方式过滤: 其中,链式编程(返回值就是对象自己)中,filter使用的是Predicate函数式 ...

  2. Java之Stream流

    Stream流的初步学习 初次学习Stream流的学习笔记,学习之前先了解一下函数式接口 概述 API是一个程序向使用者提供的一些方法,通过这些方法就能实现某些功能.所以对于流API来 说,重点是怎么 ...

  3. Java8 Stream流API常用操作

    Java版本现在已经发布到JDK13了,目前公司还是用的JDK8,还是有必要了解一些JDK8的新特性的,例如优雅判空的Optional类,操作集合的Stream流,函数式编程等等;这里就按操作例举一些 ...

  4. 【JDK8】Java8 Stream流API常用操作

    Java版本现在已经发布到JDK13了,目前公司还是用的JDK8,还是有必要了解一些JDK8的新特性的,例如优雅判空的Optional类,操作集合的Stream流,函数式编程等等;这里就按操作例举一些 ...

  5. Java的Stream流式操作

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

  6. Stream流的特点_只能使用一次和Stream流中的常用方法_map

    Stream流的特点_只能使用一次 public class FilterStudy04 { public static void main(String[] args) { //创建一个Stream ...

  7. Stream流中的常用方法foeEach和Stream流中的常用方法filter

    延迟方法:返回值类型仍然是Stream接口自身类型的方法,因此支持链式调用.(除了中介方法外,其余方法均为延迟方法) 终结方法:返回值类型不再是Stream接口自身类型的方法,因此不再支持类似Stri ...

  8. Stream流中的常用方法

    count package com.yang.Test.StreamStudy; import java.util.stream.Stream; /** * 统计荷属:count * 正如旧集合Col ...

  9. 这可能是史上最好的 Java8 新特性 Stream 流教程

    本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...

随机推荐

  1. java开发-前后端分离

    众所周知,做java开发是后端的开发,我们时常与前端打交道,但更加注重后端代码的实现,前台的页面都是由前端开发人员做的,那么,是怎么做到前后端分离的呢? 首先,是后端的开发, 在mapper层:Stu ...

  2. java的“同一”与“相等”

    变量:引用(指向地址) + 值(该变量指向值所储存的那一片内存) 两个变量同一 : 判断 是否 这两个变量指向同一片内存. 两个变量相等 : 判断 是否 这两个变量的类型相同,且值相等. 注:常用的& ...

  3. bat批处理常用脚本

    windows下有很多场景需要编写批处理来解决问题,跟定时任务相结合使用更佳. 1.创建文件,md,mkdir都可以进行文件创建 set AwrPath=D:\OracleTabChk if not ...

  4. [Luogu P4124] [CQOI2016]手机号码 (数位DP)

    题面 传送门:洛咕 Solution 感谢神仙@lizbaka的教学 这题是数位DP的非常非常模板的题目,只是状态有点多 . 这题我使用记忆化搜索实现的 中国有句古话说的好,有多少个要求就设多少个状态 ...

  5. 记EF的一个基本访问类

    代码: 1 using EFModel; 2 using System; 3 using System.Collections.Generic; 4 using System.Data.Entity; ...

  6. 【阿里云-大数据】阿里云DataWorks学习视频汇总

    阿里云DataWorks学习视频汇总 注意:本文档中引用的视频均来自阿里云官方的帮助文档,本文档仅仅是汇总整理,方便学习. 阿里云DataWorks帮助文档链接:https://help.aliyun ...

  7. java中在构造方法中修改线程名,修改失败原因(现已修改成功)

    package com.cx.Threads; public class HelloThread extends Thread{ @Override public void run() { for ( ...

  8. 一致性(ECMAScript语法标准翻译)

    Conformance A conforming implementation of ECMAScript must provide and support all the types, values ...

  9. 重点思维导图------redis深度历险

  10. Makefile 指定源文件目录 make

    top=$(CURDIR) SRC_DIR=$(top)/src BUILD_DIR=$(SRC_DIR) src=$(wildcard $(SRC_DIR)/*.c) obj=$(patsubst ...