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

Java Stram之“筛选与切片”的简介说明

转自:

Java Stram之“筛选与切片”的简介说明

当我们获取一个Stream流之后,我们可以对其进行筛选与切片,那么筛选与切片有哪些方法呢?下文将一一道来,如下所示:

  1. filter(Predicate p): 接收 Lambda , 从流中排除某些元素
  2. distinct(): 筛选,通过流所生成元素的 hashCode() 和 equals() 去除重复元素
  3. limit(long maxSize): 截断流,使其元素不超过给定数量
  4. skip(long n) :跳过元素,返回一个扔掉了前 n 个元素的流。若流中元素不足 n 个,则返回一个空流同limit(n)互补

filter(Predicate p)

例:
  过滤类中 年龄大于10岁的数据

例:user集合

List<User> users = Arrays.asList(
            new User(101, "user-1", 8),
            new User(102, "user-2", 18),
            new User(103, "user-3", 11) 
    );
 @Test
 public void testRun() {
   users.stream()
        .filter((e) -> e.getAge() > 10)
        .forEach(System.out::println);
 }
注意事项:
   System.out::println是Java8中方向引用的写法
filter 方法 的作用就是筛选数据

distinct()去重方法

distinct 去重方法,可对对象数据流进行去重操作,如下例所示:

package com.java265;
import java.util.Arrays;
import java.util.List;
public class testMain {
	public static void main(String[] args) {
		List<Integer> t = Arrays.asList(11, 22, 11, 22, 34, 6, 8);
		t.stream().distinct().forEach(System.out::println);
	}

}
-------运行以上代码,将输出以下信息-------
11
22
34
6
8 

limit关键字的功能说明

limit(long maxSize)
用于返回集合前指定条数的数据
例:

package com.java265;
import java.util.Arrays;
import java.util.List;
public class testMain {
	/*
	 * java265.com
	 * 返回符合条件的前2条数据
	 * */
	public static void main(String[] args) {
        List<Integer> t = Arrays.asList(11, 22, 11, 22, 34, 6, 8);
		t.stream().distinct().limit(2).forEach(System.out::println);
	}
}
-------运行以上代码,将输出以下信息--------
11
22

skip关键字的功能说明

skip(long n):跳过前多少个数据 例:

package com.java265;
import java.util.Arrays;
import java.util.List;
public class testMain {
	/*
	 * java265.com 跳过前4条数据
	 */
	public static void main(String[] args) {
		List<Integer> t = Arrays.asList(11, 22, 11, 22, 34, 6, 8);
		t.stream().skip(4).forEach(System.out::println);
	}
}
------运行以上代码,将输出以下信息----
34
6
8
 

相关文章:

  • C++ Reference: Standard C++ Library reference: C Library: cfenv: FE_INVALID
  • 吸血、迁移与资本局 Move 公链大火背后
  • 妥协型人格分析,妥协型性格的缺点和改善
  • Kaggle 新手入门必看,手把手教学
  • JAVA 实现《warcraft java版》游戏
  • 【深度学习】Pytorch面试题:什么是 PyTorch?PyTorch 的基本要素是什么?Conv1d、Conv2d 和 Conv3d 有什么区别?
  • 如何处理百亿级别的数据信息
  • Spring源码级笔记(二)
  • 一起Talk Android吧(第三百八十八回:lifecycle)
  • 直流无刷电机FOC控制算法 理论到实践 —— 实践
  • 初级程序员必会的java反射教程
  • JS学习762~780(注册事件+删除事件+DOM事件流+事件对象+阻止事件冒泡+事件委托鼠标事件+键盘事件)
  • 【华为机试真题Java】滑动窗口最大值
  • Triton测试
  • 监控文件事件
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • Android交互
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • ES6之路之模块详解
  • isset在php5.6-和php7.0+的一些差异
  • maya建模与骨骼动画快速实现人工鱼
  • Python 基础起步 (十) 什么叫函数?
  • use Google search engine
  • webpack4 一点通
  • 前端技术周刊 2019-02-11 Serverless
  • 如何设计一个比特币钱包服务
  • 算法系列——算法入门之递归分而治之思想的实现
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 无服务器化是企业 IT 架构的未来吗?
  • 走向全栈之MongoDB的使用
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ‌内网穿透技术‌总结
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #APPINVENTOR学习记录
  • (02)Hive SQL编译成MapReduce任务的过程
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Qt) 默认QtWidget应用包含什么?
  • (顺序)容器的好伴侣 --- 容器适配器
  • (转)nsfocus-绿盟科技笔试题目
  • (自用)gtest单元测试
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .“空心村”成因分析及解决对策122344
  • .NET : 在VS2008中计算代码度量值
  • .NET 材料检测系统崩溃分析
  • .NET 读取 JSON格式的数据
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .net6 当连接用户的shell断掉后,dotnet会自动关闭,达不到长期运行的效果。.NET 进程守护
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @ResponseBody
  • [<事务专题>]
  • [android] 切换界面的通用处理
  • [C语言]——函数递归
  • [HDOJ4911]Inversion
  • [JAVA] 什么是Java线程同步机制?