Java8 Lambda编程常用技巧

遍历打印List
List<Integer> list= Arrays.asList(1,5,6,8,9,32,5,8,7,4,5);
list.forEach(System.out::println);
排序
List<Integer> list = Arrays.asList(1, 5, 6, 8, 9, 32, 5, 8, 7, 4, 5);
list.sort((o1, o2) -> o1-o2);
过滤
List<Integer> list = Arrays.asList(1, 5, 6, 8, 9, 32, 5, 8, 7, 4, 5);
list.stream().filter(num -> num>10).forEach(System.out::println);
注:过滤器 不会影响 原来的列表
List<Integer> list3 = Arrays.asList(1, 6, 4, 3, 2, 8, 4, 3);
List<Integer> list3Res = list3.stream().filter(new Predicate<Integer>() {
@Override
public boolean test(Integer num) {
return num == 3;
}
}).collect(Collectors.toList());
System.out.println(list3Res); // [3, 3]
filter: 会移除不符合条件的数据
从一个list生成另一个list1数据
List<String> list=Arrays.asList("apple","banana","orange");
List<Integer> list2=list.stream().map(String::length).collect(Collectors.toList());
注:map 对管道流通的每个元素进行一个转换处理
累加
List<Integer> list = Arrays.asList(1, 5, 6, 8, 9, 32, 5, 8, 7, 4, 5);
Integer reduce = list.stream().reduce(0, (o1, o2) -> o1 + o2);
/**
* indentity 起始值
* (o1, o2) -> o1 + o2 等于 o1=o1+o2
*/
T reduce(T identity, BinaryOperator<T> accumulator);
分组
List<String> list=Arrays.asList("apple","banana","orange");
Map<Integer,List<String>> group=list.stream().collect(Collectors.groupingBy(String::length));
转换大小写
Optional.ofNullable("hello,world").map(String::toUpperCase).ifPresent(System.out::println);
排序及获取最大值
List<Integer> list1 = Arrays.asList(1, 6, 4, 3, 2, 8, 4, 3);
list1.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
System.out.println(list1);// [1, 2, 3, 3, 4, 4, 6, 8]
List<Integer> list2 = Arrays.asList(1, 6, 4, 3, 2, 8, 4, 3);
Optional<Integer> max = list2.stream().max(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
System.out.println(max.orElse(null));// 8
o1-o2 : 表示从小到大排序
max :是取最后一个值
Java8 Lambda编程常用技巧的更多相关文章
- SHELL脚本编程的常识和VI常用技巧
来源:http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTM#_Toc3751808 ...
- Linux Shell编程之常用技巧
前言 本文集中介绍了bash编程中部分高级编程方法和技巧.通过学习本文内容,可以帮你解决以下问题: 1.bash可以网络编程么? 2..(){ .|.& };. 据说执行这些符号可以死机,那么 ...
- java8 lambda表达式和函数式编程
什么是函数式接口(Functional Interface) 其实之前在讲Lambda表达式的时候提到过,所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法 (可以有def ...
- Java8函数式编程探秘
引子 将行为作为数据传递 怎样在一行代码里同时计算一个列表的和.最大值.最小值.平均值.元素个数.奇偶分组.指数.排序呢? 答案是思维反转!将行为作为数据传递. 文艺青年的代码如下所示: public ...
- 关于Java8函数式编程你需要了解的几点
函数式编程与面向对象的设计方法在思路和手段上都各有千秋,在这里,我将简要介绍一下函数式编程与面向对象相比的一些特点和差异. 函数作为一等公民 在理解函数作为一等公民这句话时,让我们先来看一下一种非常常 ...
- 【Java学习笔记之三十一】详解Java8 lambda表达式
Java 8 发布日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Java 8之前 ...
- java8 快速入门 lambda表达式 Java8 lambda表达式10个示例
本文由 ImportNew - lemeilleur 翻译自 javarevisited.欢迎加入翻译小组.转载请见文末要求. Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发 ...
- Java8 lambda表达式10个示例
Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Ja ...
- java8 Lambda表达式的10个例子(转)
原文:http://jobar.iteye.com/blog/2023477 Java8中Lambda表达式的10个例子 例1 用Lambda表达式实现Runnable接口 Java代码 收藏代码// ...
- [2017.02.23] Java8 函数式编程
以前学过Haskell,前几天又复习了其中的部分内容. 函数式编程与命令式编程有着不一样的地方,函数式编程中函数是第一等公民,通过使用少量的几个数据结构如list.map.set,以及在这些数据结构上 ...
随机推荐
- 录音转文字SDK哪家强?
最近在做一款录音App,有一个模块是录音转文字功能,于是对比了市面上常见的API,国内做的比较大的主要有讯飞.腾讯.阿里.百度.华为. 讯飞 讯飞在国内做语音SDK是做的比较早的,翻译出来的准确率挺不 ...
- C++:使自定义类支持迭代器
概述 在 C++ 中,链表迭代器是一种用来遍历链表(如 std::list)元素的工具.链表是一种数据结构,其中每个元素(节点)包含一个数据值和一个指向下一个节点的指针.链表迭代器允许以类似于数组的方 ...
- 巧用PDF转Markdown插件,在扣子(Coze)手搓一个有趣好玩的AI Bot
近期,TextIn团队开发的PDF转Markdown插件已经上架Coze平台. 短短的时间内,已经有不少朋友愉快地和我们的工具开始玩耍.今天我们抛砖引玉,介(an)绍(li)几种PDF转Markdow ...
- JavaScript – Symbol
前言 Symbol 是 es6 的特性. 如果只是写业务逻辑代码, 其实是不太会用到的. 如果是做架构, 封装, UI 组件才有需要. 但学它的概念是好的. es6 有需要内置的 Symbol 链接者 ...
- 如何基于Java解析国密数字证书
一.说明 随着信息安全的重要性日益凸显,数字证书在各种安全通信场景中扮演着至关重要的角色.国密算法,作为我国自主研发的加密算法标准,其应用也愈发广泛.然而,在Java环境中解析使用国密算法的数字证书时 ...
- 使用duxapp开发 React Native App 事半功倍
Taro的React Native端开发提供了两种开发方式,一种是将壳和代码分离,一种是将壳和代码合并在一起开发 壳是用来打包调试版或者发版安装包使用的 代码是运行在壳上的js代码 Taro壳子的代码 ...
- 使用KFold交叉验证方法划分训练集和验证集
在进行深度学习时,为了提高精度,或者为了评估我们模型的优劣,以及如何选择一个更好的模型.这样我们就需要用到交叉验证方法. 我们主要实现如何使用KFold划分训练集和验证集 #coding:utf-8f ...
- 泛型dotnet
// 什么是泛型List<T> T:表示类型参数,指代任意类型 T可以是任意标识 // 编写代码时使用特殊符号替代位置类型,在实例化或使用/调用时才会进行具体类型的定义 // 特点:重用代 ...
- 2. react项目【前端】+C#【后端】从0到1
前端 1. 删除默认的src下所有文件,替换如下文件目录 2. src/index.js:
- C#轻松实现Modbus通信
1.前言 大家好!我是付工.前面给大家介绍了一系列关于RS485与Modbus的知识. 终于有人把RS485说清楚了终于有人把Modbus说明白了通透!终于把ModbusRTU弄明白了这样看来,Mod ...