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. 80%人会答错的JS基础面试题

    这套题第一道题难度最大,我第一遍的回答居然也错的,我悲观估计80%的JavaScript从业人员都答不完全准确 []==![] 得到什么? false, 你还需要看看基础 true, 恭喜你答对了,你 ...

  2. IDEA与Eclipse创建struts项目

    1.IDEA创建struts项目 这里再构建struts项目是选择jar包出问题了,可以重新配置 创建页面和action配置struts.xml 启动tomcat,浏览器中运行 具体参考: https ...

  3. 解密Cookie,这一篇就够了

    一.Cookie介绍 因为HTTP协议是无状态的,每次请求都是独立的,服务器端无法判断两次请求是否来自同一个用户,进而也就无法判断用户的登录状态,也不知道用户上一次做了什么.所以Cookie就是用来绕 ...

  4. ceph的pg的分布的快速查看

    前言 本篇的内容实际上是另外一篇文章的字篇章,在另外一篇文章当中,将会对crush的分布的调整的做一次总结,用比较简单的方式来展示各种crush的区别 在做这个工作过程中,为了更好的能展示出效果,就有 ...

  5. 编译一个支持多线程的php安装包

    前言 因为项目上的需要,需要用到php,一般来说,用默认的版本和配置就可以满足大多数的场景,因为需要加入多线程,所以需要自己编译一个包 一般来说,发行的包的版本的配置选项和代码都是最稳定的,所以在大多 ...

  6. linux系统中 SElinux安全子系统

    1.SElinux 是什么? SElinux(Security-Enhanced Linux)是美国国家安全局在linux开源社区的帮助下开发的一个强制访问控制(Mandatory Access Co ...

  7. day01-系统基础信息模块

    前言:2015年,由于大规模采用云平台虚拟机部署应用,每套应用系统的MySQl.接口机.WEB服务器.文件服务器需要经常进行版本升级.配置更新.安全补丁加固.iptables调整.配置核实,大量的手工 ...

  8. Android ALSPS驱动分析

    一.alsps的初始化函数和重要结构体 epl2182_init // Epl2182.c (kernel-3.10\drivers\misc\mediatek\alsps\epl2182-new) ...

  9. 刚安装好的MathType怎么使用

    对于刚接触公式编辑器的新手来说,难免会存在很多疑问:如何使用刚安装好的Word公式编辑器?安装好公式编辑器之后,我们在哪里找到这个工具呢?下面就针对大家的这些疑问,来给大家介绍下首次使用MathTyp ...

  10. Mac下载器Folx的标签功能怎么使用

    当大家使用Folx下载软件的时候,会发现,下载好的文件或者视频,会被Folx自动打上标签,进行归类,这其实就是Folx自带的智能标签功能,它能智能识别图片.视频.应用程序并分类.但很多时候,智能标签并 ...