lambda 和 Predicate 的妙用示例

2023-11-11

1. 过滤集合数据的多种常用方法

public class DemoTest1 {
    public static void main(String[] args) {
        List<String> languages = Arrays.asList("Java", "Python", "C++", "Lisp", "Haskell", "Scala");

		// 值为 “J” 开头
		languages.stream().filter((str)->str.startsWith("J")).forEach(System.out::println); 

		// 值为 “a” 结尾
		languages.stream().filter((str)->str.endsWith("a")).forEach(System.out::println);   
		
		// 输出全部
		languages.stream().filter((str)->true).forEach(System.out::println);  

		// 长度大于4
		languages.stream().filter((str)->str.length()>4).forEach(System.out::println);  
    }
}

2. 多种 Predicate 的过滤条件联合使用

 public class DemoTest2 {
    public static void main(String[] args) {
        List<String> languages = Arrays.asList("Java", "Python", "C++", "Lisp", "Haskell", "Scala");
        Predicate<String> startsWithJ = (n) -> n.startsWith("J");
        Predicate<String> fourLetterLong = (n) -> n.length() == 4;
        languages.stream().filter(startsWithJ.and(fourLetterLong)).forEach(System.out::println);
    }
}

3. 对集合中的所有数据进行相同处理

public class DemoTest3 {
    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(100, 200, 300, 400, 500);
        list.stream().map((cost) -> cost + .12 * cost).forEach(System.out::println);
    }
}

4. 对集合中的所有数据进行相同处理并整合输出

reduce() 方法:同样可以接受 lambda 表达式,然后对所有的值进行合并

public class DemoTest4 {
    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(100, 200, 300, 400, 500);
        Double sum = list.stream().map((cost) -> cost + .12 * cost).reduce(Double::sum).get();
        System.out.println(sum);
    }
}

5. 通过过滤创建一个新的集合

public class DemoTest5 {
    public static void main(String[] args) {
        List<String> fileNames = Arrays.asList("EDMMICabc20230625","bcd","EDMMICdefg20230625","jk");
        Predicate<String> p1 = (n) -> n.startsWith("EDMMIC");
        Predicate<String> p2 = (n) -> n.endsWith("20230625");
        List<String> list = fileNames.stream().filter(p1.and(p2)).collect(Collectors.toList());
        list.forEach(System.out::println);
    }
}

6. 对集合进行去重

public class DemoTest6 {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(9, 10, 3, 4, 7, 3, 4);
        List<Integer> collect = numbers.stream().distinct().collect(Collectors.toList());
        System.out.println(numbers);
        System.out.println(collect);
    }
}

7. 计算集合元素的最大值、最小值、总和以及平均值

public class DemoTest7 {
    public static void main(String[] args) {
        List<Integer> primes = Arrays.asList(2, 3, 5, 7, 11, 13, 17, 19, 23, 29);
        IntSummaryStatistics statistics = primes.stream().mapToInt((x) -> x).summaryStatistics();
        System.out.println(statistics.getMax()); // 最大值
        System.out.println(statistics.getMin()); // 最小值
        System.out.println(statistics.getSum()); // 总和
        System.out.println(statistics.getAverage()); // 平均值
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

lambda 和 Predicate 的妙用示例 的相关文章

随机推荐

  • wpa_supplicant工具移植

    一 移植准备 就移植来说 wpa supplicant的移植和ssh十分类似 wpa supplicant需要openssl和libnl库 所以我们需要先准备好openssl和libnl库 openssl的移植在前面的文章嵌入式Linux开
  • 【AI安全与隐私论坛】第12期学习笔记——Trustworthy Al: to be Robust or to be Fair

    开设了会议学习系列 主要注重理解专家的科研和讲述逻辑 以及锻炼画概念图流程图的能力 绘图软件 PPT 第12期论坛视频链接 AI安全与隐私论坛第12期 密歇根州立大学汤继良教授 可信人工智能中的鲁棒性和公平性可以兼得吗 文章目录 1 Int
  • 深度学习-第T9周——猫狗识别

    深度学习 第T9周 猫狗识别 深度学习 第T9周 猫狗识别 一 前言 二 我的环境 三 前期工作 1 导入数据集 2 查看图片数目 四 数据预处理 1 加载数据 1 1 设置图片格式 1 2 划分训练集 1 3 划分验证集 1 4 查看标签
  • mysql8.0新特性--隐藏索引

    我们有时候想删除掉冗余索引 但是又怕删除之后影响到查询性能 这时候再回退就需要一定的时间 MySQL8 0开始支持隐藏索引 invisible indexes 隐藏索引不会被优化器使用 如果你想验证某个索引删除之后的查询性能影响 就可以暂时
  • MIPI协议解析——DPI

    在MIPI协议族中 除了DSI 用于显示 CSI 用于摄像头 还有几个概念会经常涉及到 这里把他们提出来说一说 免得有误区 MIPI DPI的全称为Display Pixel interface 是用于主机到显示设备的一种数据传输标准 一般
  • pycharm彻底卸载

    mac中pycharm下载后无法打开 可能是因为使用破解后vm路径改变 完全卸载后再次安装即可 cd Library Preferences rm rf PyCharm2019 x cd Library Logs rm rf PyCharm
  • _T() 和_L() _TEXT __T,L区别与联系详解

    T 和 L TEXT T L区别与联系详解 T 是一个宏 他的作用是让你的程序支持Unicode编码 因为Windows使用两种字符集ANSI和UNICODE 前者就是通常使用的单字节方式 但这种方式处理象中文这样的双字节字符不方便 容易出
  • c++11

    列表 1 boost bind 2 boost function 3 列表初始化 4 nullptr 空指针 6 constexpr函数 6 using类型别名 7 auto类型指示符 8 decltype类型指示符 9 范围for语句 1
  • k8s部署prometheus + grafana

    k8s以Deployment方式部署prometheus grafana 主机说明 系统 ip 角色 cpu 内存 hostname CentOS 7 8 192 168 30 128 master gt 2 gt 2G master1 C
  • 线性回归(Linear Regression)

    引言 说到底 回归任务都是寻找特征与目标之间的关系 我们认为每一个特征或多或少 或积极或消极地对目标产生着影响 我们期望寻找数学表达式来表达出这种影响 一 回归模型 想象一下描述特征与目标之间最简单明了的关系是什么 当然是线性关系了 每个特
  • 解决RuntimeError: CUDA error: device-side assert triggeredCUDA kernel errors...CUDA_LAUNCH_BLOCKING=1

    完整报错 RuntimeError CUDA error device side assert triggeredCUDA kernel errors might be asynchronously reported at some oth
  • opencv 中Canny边缘检测算法原理加每一个(分)步骤的代码演示

    1 原理 1 噪声抑制 输入图像经过高斯平滑滤波 减少噪声的影响 2 计算梯度 在平滑后的图像上应用Sobel算子计算梯度幅值和方向 3 非极大值抑制 在梯度方向上 比较每个像素的梯度幅值与其相邻两个像素沿着梯度方向的梯度幅值 如果当前像素
  • 本科毕设研究记录(一)————小样本综述

    本科毕设记录 一 小样本综述 综述 问题定义 相关的领域 核心问题 经验风险最小化 Empirical Risk Minimization 不可靠的经验风险最小化 Unreliable Empirical Risk Minimizer 解决
  • 华为主题包hwt下载_hwt主题文件下载猫和老鼠

    hwt主题文件下载猫和老鼠app是一款针对华为手机精心设定的一款主题软件 软件主题是以经典的猫和老鼠动态图为主 各种不同风格的搞笑图片可以任意下载使用 当它们出现在你的手机屏保上时 让你聊天时更开心 设置方法比较简单 会有相关的教程 hwt
  • 动画的应用,西游记动画效果

    实现背景向后移动以及人物走路的动画效果 实现代码如下
  • AngularJS(13)-包含

    AngularJS 包含 使用 AngularJS 你可以使用 ng include 指令来包含 HTML 内容 实例
  • WIN10下搭建gcc编译环境

    安装make 1 下载make 3 81 链接 https pan baidu com s 1kj2CzmLvl tDTuHJRXKnBg 提取码 v7fh 2 直接安装 全选next 安装路径最好不要改动 3 进入系统属性 选择环境变量
  • 合天Weekly第二十一周

    分析代码可以看出是sql注入 首先使用order by 看下有几列 这里空格被过滤使用 绕过 当输入4的时候不回显所以为3列 提示flag在 falg 表里构造payload 1 union select 1 flag 3 from fla
  • mybatis.type-aliases-package的作用和用法

    第一种在mapper xml文件中的resultMap的type或者parameterType会用到自定义的POJO 其中resultType User 中 User就是自定义的POJO 此时可以使用完全限定名来指定这些POJO的引用 第二
  • lambda 和 Predicate 的妙用示例

    1 过滤集合数据的多种常用方法 public class DemoTest1 public static void main String args List