当前位置: 首页 > news >正文

java_Stream API

文章目录

  • 一、Stream API vs 集合
  • 二、Stream 使用的执行流程
    • 2.1、创建Stream
    • 2.1、中间操作
      • 2.1.1. filter
      • 2.1.2. limit
      • 2.1.3. skip
      • 2.1.4. distinct
      • 2.1.5. map
      • 2.1.6. sorted

一、Stream API vs 集合

  • Stream API 关注的是多个数据的计算(排序、查找、过滤、映射、遍历等),面向CPU。集合关注的是数据的存储,面向内存。
  • Stream API 之于 集合,类似于 SQL 之于 数据表的查询。

二、Stream 使用的执行流程

  • 1.创建Stream

一个数据源(如:集合、数组),获取一个流

  • 2.中间操作
  • 3.终止操作

2.1、创建Stream

  • 1.通过集合
@Test
public void test(){List<Integer> list = Arrays.asList(1,2,3,4,5);//JDK1.8中,Collection系列集合增加了方法Stream<Integer> stream = list.stream();
}

Java8 中的 Collection 接口被扩展,提供了两个获取流的方法
1.default Stream<E> stream() : 返回一个顺序流 2.default Stream<E> parallelStream() : 返回一个并行流

  • 2.通过数组
@Test
public void test(){String[] arr = {"hello","world"};Stream<String> stream = Arrays.stream(arr); int[] arr = {1,2,3,4,5};IntStream stream = Arrays.stream(arr);
}
  • 3.通过Stream的of()
@Test
public void test04(){Stream<Integer> stream = Stream.of(1,2,3,4,5);
}

2.1、中间操作

2.1.1. filter

从流中排除某些元素

	public static void main(String[] args) {List<Person> list = new ArrayList<>();Person p1 = new Person(1,"xixi");Person p2 = new Person(3,"haha");list.add(p1);list.add(p2);list.stream().filter(person -> person.getAge() > 2).forEach(System.out :: println);}

2.1.2. limit

使元素不超过指定数量

	public static void main(String[] args) {List<Person> list = new ArrayList<>();Person p1 = new Person(1,"xixi");Person p2 = new Person(3,"haha");list.add(p1);list.add(p2);list.stream().limit(1).forEach(System.out :: println);}

在这里插入图片描述

2.1.3. skip

跳过前面n个元素

	public static void main(String[] args) {List<Person> list = new ArrayList<>();Person p1 = new Person(1,"xixi");Person p2 = new Person(3,"haha");Person p3 = new Person(5,"yiyi");list.add(p1);list.add(p2);list.add(p3);list.stream().skip(2).forEach(System.out :: println);}

在这里插入图片描述

2.1.4. distinct

通过流中元素的hashCode()和equals()方法,去除重复元素

2.1.5. map

映射,将元素转换为其他形式或提取信息

	 public static void main(String[] args) {List<String> list = Arrays.asList("aa", "bb", "cc");/* 1.lmabda表达式 */list.stream().map(item -> item.toUpperCase()).forEach(System.out :: println);/* 2.方法引用 */list.stream().map(String :: toUpperCase).forEach(System.out :: println);}

在这里插入图片描述

2.1.6. sorted

排序

http://www.lryc.cn/news/193997.html

相关文章:

  • 红队专题-工具Fscan
  • 【宏实现二进制奇偶位交换】
  • 【Java零基础入门到就业】第一天:java简介和cmd窗口的一些常见命令
  • ubuntu下yolov5 tensorrt模型部署
  • windows Vscode 连接 虚拟机,超详细,含免密免ip配置 以 linux 虚拟机为例
  • 【Unity】VR基础开发2项目准备-VR基本场景构建(OpenXR方向)
  • git checkout 命令
  • 二.镜头知识之镜头总长,法兰距,安装接口
  • Android studio控制台 输出乱码解决方法
  • Hermes - 指尖上的智慧:自定义问答系统的崭新世界
  • 机器学习笔记 - 使用3D卷积神经网络进行视频分类
  • 在Unity中挂载C#脚本的三种方法
  • vue elementui的select组件实现滑到底部分页请求后端接口
  • 【Java 进阶篇】JavaScript电灯开关案例:从原理到实现
  • 并发、并行、同步、异步、阻塞、非阻塞
  • C语言:冒泡排序
  • Android 内容提供者和内容观察者:数据共享和实时更新的完美组合
  • 六、K8S之StatefulSet
  • 基于微服务+Java+Spring Cloud开发的建筑工地智慧平台源码 云平台多端项目源码
  • 微信小程序异常:navigateTo:fail can not navigateTo a tabbar page
  • 智慧公厕高精尖技术揭秘,让卫生管理更智能、更舒适
  • Spring Cloud的革新:服务网格和云原生整合
  • EfficientDet: Scalable and Efficient Object Detection
  • 【数据结构】二叉树链式存储及遍历
  • 数字孪生技术:新零售的未来之路
  • NIO教程
  • 【MySQL】表的内连和外连
  • 文心一言:文心大模型 4.0 即将发布
  • HTML笔记
  • design compiler中的drc规则详解