Java 8新增的Lambda表达式,我们可以用简洁高效的代码来处理List。

1、遍历

 public static void main(String[] args) {
List<User> userList = Lists.newArrayList(); User user1 = new User(1L, "张三", 24);
User user2 = new User(2L, "李四", 27);
User user3 = new User(3L, "王五", 21); userList.add(user1);
userList.add(user2);
userList.add(user3); userList.stream().forEach(user ->{
System.out.println(user.getName());
}); }

运行结果:

2、list转为Map

 public static void main(String[] args) {
List<User> userList = Lists.newArrayList();//存放user对象集合 User user1 = new User(1L, "张三", 24);
User user2 = new User(2L, "李四", 27);
User user3 = new User(3L, "王五", 21); userList.add(user1);
userList.add(user2);
userList.add(user3); //ID为key,转为Map
Map<Long,User> userMap = userList.stream().collect(Collectors.toMap(User::getId, a -> a,(k1, k2)->k1));
System.out.println(userMap); }

运行结果:

3、将List分组:List里面的对象元素,以某个属性来分组

  public static void main(String[] args) {
List<User> userList = Lists.newArrayList();//存放user对象集合 User user1 = new User(1L, "张三", 24);
User user2 = new User(2L, "李四", 27);
User user3 = new User(3L, "王五", 21);
User user4 = new User(4L, "张三", 22);
User user5 = new User(5L, "李四", 20);
User user6 = new User(6L, "王五", 28); userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
userList.add(user5);
userList.add(user6); //根据name来将userList分组
Map<String, List<User>> groupBy = userList.stream().collect(Collectors.groupingBy(User::getName));
System.out.println(groupBy); }

运行结果:

4、过滤:从集合中过滤出来符合条件的元素

 public static void main(String[] args) {
List<User> userList = Lists.newArrayList();//存放user对象集合 User user1 = new User(1L, "张三", 24);
User user2 = new User(2L, "李四", 27);
User user3 = new User(3L, "王五", 21);
User user4 = new User(4L, "张三", 22);
User user5 = new User(5L, "李四", 20);
User user6 = new User(6L, "王五", 28); userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
userList.add(user5);
userList.add(user6); //取出名字为张三的用户
List<User> filterList = userList.stream().filter(user -> user.getName().equals("张三")).collect(Collectors.toList());
filterList.stream().forEach(user ->{
System.out.println(user.getName());
}); }

运行结果:

5、求和:将集合中的数据按照某个属性求和

 public static void main(String[] args) {
List<User> userList = Lists.newArrayList();//存放user对象集合 User user1 = new User(1L, "张三", 24);
User user2 = new User(2L, "李四", 27);
User user3 = new User(3L, "王五", 21);
User user4 = new User(4L, "张三", 22);
User user5 = new User(5L, "李四", 20);
User user6 = new User(6L, "王五", 28); userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
userList.add(user5);
userList.add(user6); //取出名字为张三的用户
int totalAge = userList.stream().mapToInt(User::getAge).sum();
System.out.println("和:" + totalAge); }

运行结果:

6、从List转为Map,key与value 一 一对应

public static void main(String[] args) {
List<User> userList = Lists.newArrayList(); User user1 = new User(1L, "张三", 24);
User user2 = new User(2L, "李四", 27);
User user3 = new User(3L, "王五", 21);
User user4 = new User(4L, "张三", 22);
User user5 = new User(5L, "李四", 20);
User user6 = new User(6L, "王五", 28); userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
userList.add(user5);
userList.add(user6); Map<Long/*Id*/,User> userMap = userList.stream().collect(Collectors.toMap(User::getId, user -> user));
System.out.println("toMap:" + JSONArray.toJSONString(userMap));      Map<Long/*Id*/,User> userMap = userList.stream().collect(Collectors.toMap(User::getId, user -> user,(k1,k2)->k1)); //去重
     System.out.println("toMap:" + JSONArray.toJSONString(userMap));
}

运行结果:

7、在使用forEach过程中 使用return可以达到continue的效果

 public static void main(String[] args) {
List<String> testList = Lists.newArrayList("1","2","3","4","5");
testList.forEach(test->{
if (test.equals("2")){
return;
}
System.out.println(test);
});
}

运行结果:

java8新特性:利用Lambda处理List集合的更多相关文章

  1. java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合

    java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合 比如,我有一张表: entity Category.java service CategoryServic ...

  2. Java8 新特性学习 Lambda表达式 和 Stream 用法案例

    Java8 新特性学习 Lambda表达式 和 Stream 用法案例 学习参考文章: https://www.cnblogs.com/coprince/p/8692972.html 1.使用lamb ...

  3. Java8新特性系列-Lambda

    转载自:Java8新特性系列-Lambda – 微爱博客 Lambda Expressions in Java 8 Lambda 表达式是 Java 8 最流行的特性.它们将函数式编程概念引入 Jav ...

  4. Java8新特性之Lambda表达式

    lambda表达式是java8给我们带来的几个重量级新特性之一,借用lambda表达式,可以让我们的java程序设计更加简洁.最近新的项目摒弃了1.6的版本,全面基于java8进行开发,本文是java ...

  5. 零基础学习java------21---------动态代理,java8新特性(lambda, stream,DateApi)

    1. 动态代理 在一个方法前后加内容,最简单直观的方法就是直接在代码上加内容(如数据库中的事务),但这样写不够灵活,并且代码可维护性差,所以就需要引入动态代理 1.1 静态代理实现 在讲动态代理之前, ...

  6. Java8 新特性之Lambda表达式

    1. Lambda 表达式概述 Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递); Lambda 表达式可以写出更简洁,更灵活的代码 ...

  7. 【Java8新特性】Lambda表达式基础语法,都在这儿了!!

    写在前面 前面积极响应读者的需求,写了两篇Java新特性的文章.有小伙伴留言说:感觉Lambda表达式很强大啊!一行代码就能够搞定那么多功能!我想学习下Lambda表达式的语法,可以吗?我的回答是:没 ...

  8. 【Java8新特性】- Lambda表达式

    Java8新特性 - Lambda表达式 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! ...

  9. java8新特性,使用流遍历集合

    在这篇“Java 8新特性教程”系列文章中,我们会深入解释,并通过代码来展示,如何通过流来遍历集合,如何从集合和数组来创建流,以及怎么聚合流的值. 在之前的文章“遍历.过滤.处理集合及使用Lambda ...

  10. 漫漫人生路-学点Jakarta基础-Java8新特性 Stream/Lambda

    背景 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利.高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk dat ...

随机推荐

  1. 黑马day07 登录注冊案例(一)

    简单介绍:依据三层架构的思想设计本案例. 1.搭建好开发环境 准备好须要的包和模拟数据库配置文件users.xml -->cn.itheima.dao -->cn.itheima.serv ...

  2. [think in java]第12章 通过异常处理错误

    异常处理是java中唯一正式的错误报告机制. 而且通过编译器强行运行. 异常參数 抛出异常与方法正常返回值的差别:异常返回的"地点"与普通方法调用返回的"地点" ...

  3. viz.js操作流程

    1.下载依赖的js文件,并引入 <script src="${root }/resources/js/graphviz/viz.js"></script> ...

  4. 一个简单的演示用的Linux字符设备驱动程序

    实现如下的功能:--字符设备驱动程序的结构及驱动程序需要实现的系统调用--可以使用cat命令或者自编的readtest命令读出"设备"里的内容--以8139网卡为例,演示了I/O端 ...

  5. php 判断过去离现在几年的函数

    function gettime($worktime){ $time=time(); $amount=date("Y",$time)-date("Y",strt ...

  6. cloudfoundry service broker 制作

    实验室这边需要制作service broker.从今天开始将精力投入其中.

  7. SQL Server阻塞诊断

    在数据仓库维护过程中,经常会出现定时更新程序和查询SQL发生冲突而引起阻塞的情况,需要进行SQL Server诊断. SQL Server诊断一般会用到2个视图:sys.sysprocesses(系统 ...

  8. css浮动导致的高度塌陷问题及清楚浮动的方法

    浮动很好用,但是用浮动后,当浮动元素的父级元素没有高度时,就会造成高度塌陷,从而影响布局.下面就从一开接触前端时,渐渐发现解决高度塌陷的问题的方式. 一.给浮动元素的父级元素添加固定的高度css[he ...

  9. fragment基础 fragment生命周期 兼容低版本

    fragment入门 ① 创建一个类继承Fragment 重写oncreateView方法 public class FirstFragment extends Fragment { @Overrid ...

  10. BluetoothA2dp蓝牙音箱的连接

    1:权限 <uses-feature android:name="android.hardware.bluetooth_le" android:required=" ...