java8+ Lambda表达式基本用法
LIST
public class LambdaTest {
@Getter
@Setter
@AllArgsConstructor
static class Student{
private Long id;
private String name;
private Integer age;
}
public static void main(String[] args) {
List<Student> studentList = Arrays.asList(new Student(1L,"张三",15),new Student(2L,"李四",11),
new Student(3L,"王五",12),new Student(4L,"赵六",10));
System.out.println("原数据:"+ JSONArray.toJSON(studentList));
List<Student> collect1 = studentList.stream().filter(stu -> stu.getName().equals("张三")).collect(Collectors.toList());
System.out.println("查出姓名是张三的学生:"+JSONArray.toJSON(collect1));
List<Integer> collect2 = studentList.stream().map(stu -> stu.getAge()).collect(Collectors.toList());
System.out.println("取出学生的年龄集合:"+collect2);
List<Integer> collect6 = studentList.stream().map(stu -> stu.getAge()).distinct().collect(Collectors.toList());
System.out.println("取出学生的年龄集合并去重:"+collect6);
List<Student> collect3 = studentList.stream().skip(3).collect(Collectors.toList());
System.out.println("学生集合里去除前三个:"+JSONArray.toJSON(collect3));
List<Student> collect4 = studentList.stream().limit(3).collect(Collectors.toList());
System.out.println("学生集合里取前三个:"+JSONArray.toJSON(collect4));
Map<Integer, List<Student>> collect5 = studentList.stream().collect(Collectors.groupingBy(student -> student.getAge()));
System.out.println("根据学生年龄分组:"+JSONArray.toJSON(collect5));
int ageSum = studentList.stream().mapToInt(stu -> stu.getAge()).sum();
System.out.println("找出学生年龄之和:"+ageSum);
int ageMax= studentList.stream().mapToInt(stu -> stu.getAge()).max().getAsInt();
System.out.println("找出学生年龄最大:"+ageMax);
int ageMin= studentList.stream().mapToInt(stu -> stu.getAge()).min().getAsInt();
System.out.println("找出学生年龄最小:"+ageMin);
Double aggAverage = studentList.stream().mapToInt(stu -> stu.getAge()).average().getAsDouble();
System.out.println("找出学生年龄最小:"+aggAverage);
studentList.sort((a,b) -> b.getAge().compareTo(a.getAge()));
System.out.println("根据学生年龄降序:"+JSONArray.toJSON(studentList));
studentList.sort((a,b) -> a.getAge().compareTo(b.getAge()));
System.out.println("根据学生年龄升序:"+JSONArray.toJSON(studentList));
}
}
转逗号分隔
list.stream().collect(Collectors.joining(","))
排序
升序
studentList.sort(Comparator.comparing(Student::getAge));
降序
studentList.sort(Comparator.comparing(Student::getAge).reversed());
分组
根据传入的size将现有list分组(分页)
public static <T> List<List<T>> splitList(List<T> in, int size){
List<List<T>> out = new ArrayList<>();
int mode = in.size()%size;
int page = in.size()/size;
for(int i=1;i<=page;i ++){
int start = (i-1)*size;
List<T> sub = in.subList(start,start+size);
out.add(sub);
}
if(mode>0){
int start = page*size;
List<T> sub = in.subList(start,start+mode);
out.add(sub);
}
return out;
}
java8+ Lambda表达式基本用法的更多相关文章
- java8 Lambda表达式的新手上车指南(1)
背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...
- java8 Lambda表达式的新手上车指南(1)--基础语法和函数式接口
背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...
- Java8 Lambda表达式详解手册及实例
先贩卖一下焦虑,Java8发于2014年3月18日,距离现在已经快6年了,如果你对Java8的新特性还没有应用,甚至还一无所知,那你真得关注公众号"程序新视界",好好系列的学习一下 ...
- python lambda表达式简单用法【转】
python lambda表达式简单用法 1.lambda是什么? 看个例子: g = lambda x:x+1 看一下执行的结果: g(1) >>>2 g(2) >>& ...
- Java8 Lambda表达式(一)
目录 一.应用场景引入 优化一:使用策略模式 优化二:使用匿名内部类 优化三:使用Lambda表达式 优化四:使用Stream API 二.Lambda运算符和对应语法 语法格式 Lambda表达式需 ...
- Java8 Lambda表达式、函数式接口和方法引用
目录 Java8 Lambda表达式和函数式接口 Lambda表达式 Lambda的使用 函数式接口FunctionalInterface Java内置四大核心函数式接口 方法引用 构造器引用 Jav ...
- 一文搞懂Java8 Lambda表达式(附带视频教程)
Lambda表达式介绍 Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁.通过Lambda表达式,可以替代我们以前经常写的匿名内部类来实现接口.Lambda表达式本质是一个 ...
- 【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日,这次开创性的发 ...
随机推荐
- python_udp_多人聊天室_简单版
udp-一定是client端先发送数据. server.py import socket friend_lst = {'alex':'32','太白':'33'} sk =socket.socket( ...
- vue 切换主题(换肤)功能
一:先写好两个css样式放在static文件夹中 二:在index.html中添加css link链接 <link rel="stylesheet" id="sty ...
- 差分进化算法介绍及matlab实现
引言 差分进化算法是基于群体智能理论的优化算法,是通过群体内个体间的合作与竞争而产生的智能优化搜索算法,它保留了基于种群的全局搜索策略,采用实数编码.基于差分的简单变异操作和"一对一&quo ...
- POJ2689 [质数距离] 题解
质数距离 题目TP门 题目描述 给定两个整数L和R,你需要在闭区间[L,R]内找到距离最接近的两个相邻质数C1和C2(即C2-C1是最小的),如果存在相同距离的其他相邻质数对,则输出第一对. 同时,你 ...
- PicGo+jsDelivr+GitHub搭建免费图床,Typora使用图床
Github配置 首先,创建一个GitHub账号 然后添加一个仓库 创建完后点头像,Setting 然后点击Developer settings 然后点击Personal access tokens ...
- 字符串匹配—KMP算法
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法).KMP算法的核心是利用匹配失败后 ...
- [原题复现]2019上海大学生WEB-Decade(无参数RCE、Fuzz)
简介 原题复现: 考察知识点:无参数命令执行.Fuzz 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 环境复现 ...
- Guitar Pro 功能介绍之RSE引擎
众所周知,Guitar Pro是一个集多音轨丰富音色库的一款软件,并且拥有MIDI 音序器,但是光拥有MIDI是无法让我们制作的音乐可以如此逼真,而Guitar Pro能创造制作这么逼真的音乐,多亏了 ...
- 安装卸载nginx
http://www.nginx.cn/install ubuntu和debain下的apt方式安装软件很方便,特别是对于新手安装和卸载nginx. 由于nginx不能动态添加模块,所以会经常安装和卸 ...
- 工作中使用RabbitMQ
写一个基类 1 <?php 2 3 namespace BI\Service\RabbitMQJob; 4 5 use AMQPConnection; 6 use AMQPChannel; 7 ...