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表达式基本用法的更多相关文章

  1. java8 Lambda表达式的新手上车指南(1)

    背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...

  2. java8 Lambda表达式的新手上车指南(1)--基础语法和函数式接口

    背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...

  3. Java8 Lambda表达式详解手册及实例

    先贩卖一下焦虑,Java8发于2014年3月18日,距离现在已经快6年了,如果你对Java8的新特性还没有应用,甚至还一无所知,那你真得关注公众号"程序新视界",好好系列的学习一下 ...

  4. python lambda表达式简单用法【转】

    python lambda表达式简单用法 1.lambda是什么? 看个例子: g = lambda x:x+1 看一下执行的结果: g(1) >>>2 g(2) >>& ...

  5. Java8 Lambda表达式(一)

    目录 一.应用场景引入 优化一:使用策略模式 优化二:使用匿名内部类 优化三:使用Lambda表达式 优化四:使用Stream API 二.Lambda运算符和对应语法 语法格式 Lambda表达式需 ...

  6. Java8 Lambda表达式、函数式接口和方法引用

    目录 Java8 Lambda表达式和函数式接口 Lambda表达式 Lambda的使用 函数式接口FunctionalInterface Java内置四大核心函数式接口 方法引用 构造器引用 Jav ...

  7. 一文搞懂Java8 Lambda表达式(附带视频教程)

    Lambda表达式介绍 Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁.通过Lambda表达式,可以替代我们以前经常写的匿名内部类来实现接口.Lambda表达式本质是一个 ...

  8. 【Java学习笔记之三十一】详解Java8 lambda表达式

    Java 8 发布日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Java 8之前 ...

  9. java8 快速入门 lambda表达式 Java8 lambda表达式10个示例

    本文由 ImportNew - lemeilleur 翻译自 javarevisited.欢迎加入翻译小组.转载请见文末要求. Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发 ...

随机推荐

  1. 批处理最小二乘法 python

    参考:系统辨识与自适应控制MATLAB仿真(修订版) 庞中华 崔红 仿真实例2.5 import numpy as np import matplotlib.pyplot as plt from mx ...

  2. 关于“Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.”

    Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the c ...

  3. Netlink 内核实现分析 4

    netlink 库函数: http://www.infradead.org/~tgr/libnl/doc/core.html#core_netlink_fundamentals #define NET ...

  4. tcpdump详解(转)

    tcpdump是Linux下强大的抓包工具,不仅可以分析数据包流向,还可以对数据包内容进行监听.通过分析数据包流向,可以了解一条连接是如何建立双向连接的.tcpdump允许用户(一般是root)拦截和 ...

  5. binary hacks读数笔记(共享库)

    共享库从文件结构上来讲,与共享对象没什么区别.Linux下,共享库就是普通的ELF共享对象. 1.共享库命名: libname.so.x.y.z :其中最前面使用前缀lib,中间是库的名字和后缀&qu ...

  6. C#高级编程之特性

    特性定义 MSDN的描述:使用特性,可以有效地将元数据或声明性信息与代码(程序集.类型.方法.属性等)相关联. 将特性与程序实体相关联后,可以在运行时使用反射这项技术查询特性. 参考此处作者的解释 h ...

  7. addslashes()

    addslashes() 函数返回在预定义字符之前添加反斜杠的字符串. 作用:防止sql注入

  8. .net core quartz job作业调度管理组件

    定时作业对于多数系统来说,都会用到,定时作业的实现方式可以有多种方式,简单的方式用Timer就可以实现,但是达不到通用的效果,本文采用Quartz基础组件来搭建一套企业通用的作业调度管理服务,希望对于 ...

  9. 使用Camtasia制作魔性抖肩舞视频

    最近一首风魔各大视频网站的魔性舞蹈又来袭了!这首充满魔性节奏的舞蹈就是抖肩舞了,为了将我热爱的抖肩舞视频分享给大家,我必须使用Camtasia教程录制(Windows系统)软件来制作一个魔性抖肩舞视频 ...

  10. Vegas让人物回眸更有韵味的方法分享

    "回眸一笑百媚生,六宫粉黛无颜色",是白居易在<长恨歌>中描述杨贵妃美貌的名句,这一句运用夸张的手法,反映了杨贵妃回眸时的娇媚横生,百般娇媚. 接下来,小编就教你用视频 ...