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. 大数据分析中数据治理的重要性,从一个BI项目的失败来分析

    很多企业在做BI项目时,一开始的目标都是想通过梳理管理逻辑,帮助企业搭建可视化管理模型与深化管理的精细度,及时发现企业经营管理中的问题. 但在项目实施和验收时,BI却变成了报表开发项目,而报表的需求往 ...

  2. HarmonyOS Java UI之DirectionalLayout布局

    在之前的章节中我使用的是Java 代码构建UI界面,从本节开始,将使用XML构建UI界面. 使用XML构建UI(默认你已经会在项目中创建XML布局文件)界面相对Java代码构建的好处是:结构清晰,代码 ...

  3. Netlink 内核实现分析 4

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

  4. shell编程之输入输出

    1.输入 read命令有以下几种常见形式: read  var  :等待用户输入,从标准输入中读取一行并赋值给变量var read : 标准输入读取一行,并赋值给内置变量REPLY read -a a ...

  5. Android studio设置参数文档提示

    方法/步骤     进行点击Android studio菜单中的file的选项菜单.   弹出了下拉菜单中进行选择为"settings"的选项的菜单即可.   进入到了settin ...

  6. Spark3.0.1各种集群模式搭建

    对于spark前来围观的小伙伴应该都有所了解,也是现在比较流行的计算框架,基本上是有点规模的公司标配,所以如果有时间也可以补一下短板. 简单来说Spark作为准实时大数据计算引擎,Spark的运行需要 ...

  7. C#设计模式——代理模式(Proxy Pattern)

    引言 在我们的生活中,经常会遇到需要什么东西,但是自己又不是很方便或者对方不是很方便,则就需要中间的一个代理人去解决.例如代购.在软件开发中,也会遇到这样的问题.有些对象有时候会由于网络或其他的障碍, ...

  8. 真的可惜,四面阿里,结果我被JVM垃圾回收机制与 OOM异常卡住了

    前言 为什么需要垃圾回收 首先我们来聊聊为什么会需要垃圾回收,假设我们不进行垃圾回收会造成什么后果,我们举一个简单的例子 我们住在一个房子里面,我们每天都在里面生活,然后垃圾都丢在房子里面,又不打扫, ...

  9. .NET 5 ORM 八大实用技巧 干货 - SqlSugar ORM

    介绍 sqlsugar已经在第一时间完美兼容.NET5并且已经有人在使用了, 很多人都担心用了开源框架遇到问题无法解决,导致前功尽弃,使用SqlSugar你大可放心,除了有详细文档和几年的大量用户积累 ...

  10. Ubuntu16.04安装搜狗输入法报错:dkpg:处理归档sogoupinyin.deb(--install)时出错,安装sogoupinyin将破坏fcitx-ui-qimpanel

    系统:ubuntu16.04 事件:安装搜狗拼音时报错 报错信息(ubuntu语言是英文的报错信息): dpkg: regarding sogoupinyin_2.3.2.07_amd64-831.d ...