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. BZOJ 3037 创世纪 树形DP

    题目大意:给定一张有向图,每一个点有且仅有一条出边,要求若一个点x扔下去,至少存在一个保留的点y,y的出边指向x,求最多扔下去多少个点 首先原题的意思就是支配关系 我们反向考虑 求最少保留的点 要求一 ...

  2. C#调用C++回调函数的问题

    C++的回调函数中有一个参数是,是返回一个字符串,原则如下: typedef   void   (*TDataEvent)(char   *AData   ,int   ALen); 其中char   ...

  3. tiny4412开机动画、开机界面的定制 【原创】

    关键词:Android  linux 开机logo 开机动画  平台信息:内核:linux3.0.68 系统:android/android5.1平台:tiny4412 作者:庄泽彬(欢迎转载,请注明 ...

  4. 饭卡(hdoj--2546--背包)

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  5. EOJ 1113 装箱问题

    有一个箱子容量为 V (正整数,0≤V≤20000),同时有 n 个物品(0<n≤30),每个物品有一个体积(正整数).要求从 n 个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. Inp ...

  6. [JavaEE] Hibernate连接池配置测试

    转载自51CTO http://developer.51cto.com/art/200906/129914.htm Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以 ...

  7. C# List<T>转成DataTable

    //将List<T>转成DataTable         public static DataTable ToDataTable(List<T> collection)    ...

  8. APM技术原理

    链接地址:http://www.infoq.com/cn/articles/apm-Pinpoint-practice 1.什么是APM? APM,全称:Application Performance ...

  9. Centos7中 文件大小排序

    centos7中根据文件大小排序以及jenkins配置每周删除一次jobs日志信息 https://blog.csdn.net/u013066244/article/details/70232050

  10. 文件操作:Directory,File,FielStream、StreamRead和StreamWriter的使用

    Directory文件类,File,FielStream.StreamRead和StreamWriter的使用 (转载) 创建一个新文件 Directory.CreateDirectory(@&quo ...