先准备一点数据:

public class User {
    private Integer id;
    private String type;
    private String name;
    private String date;

// omit setter and getter

}

User user1 = new User(1,"张三","小学", "2017-03");
User user2 = new User(2,"李四","小学", "2017-03");
User user3 = new User(3,"王五","初中", "2017-02");
User user4 = new User(4,"马六","高中", "2017-04");
User user5= new User(5,"jack","大学", "2017-04");

List<User > list = new ArrayList<>();

list.add(user1 );
list.add(user2 );
list.add(user3 );
list.add(user4 );

list.add(user5);

现在想对用户列表根据日期进行分组,得到一个map: date -> List<User>。

Java7以前也许是这样的:

List<User> userList = Arrays.asList(user1, user2, user3, user5, user4);Map<String, List<User>> groupUserMap = Maps.newHashMap();for (User user : userList) {String month = user.getDate();if (groupUserMap.containsKey(month)) {groupUserMap.get(month).add(user);} else {groupUserMap.put(month, Lists.newArrayList(user));}}

有了Java8之后,一切很简单了:

Map<String, List<User>> groupUserMapOne =userList.stream().collect(Collectors.groupingBy(User::getDate));

如果想分组的List里是User的name呢:

 Map<String, List<String>> userByDate = Stream.of(user1, user2, user3, user5, user4).collect(Collectors.groupingBy(User::getDate,Collectors.mapping(User::getName, Collectors.toList())));System.out.println(userByDate);

转载于:https://www.cnblogs.com/ZJOE80/p/10935806.html

关于Jdk7与Jdk8对Collections进行分组的区别相关推荐

  1. java8 collections_关于Jdk7与Jdk8对Collections进行分组的区别

    先准备一点数据: public class User { private Integer id; private String type; private String name; private S ...

  2. JDK7与JDK8中HashMap的实现

    JDK7中的HashMap HashMap底层维护一个数组,数组中的每一项都是一个Entry 1 transient Entry<K,V>[] table; 我们向 HashMap 中所放 ...

  3. Java集合:JDK7与JDK8中HashMap的实现

    JDK7中的HashMap HashMap底层维护一个数组,数组中的每一项都是一个Entry transient Entry<K,V>[] table; 我们向 HashMap 中所放置的 ...

  4. java 8代码 改 java7_Window安装JDK7和JDK8,并一键切换

    脚本代码:(保存成.bat文件直接运行就可以了.)代码如下: @echo off title 修改JDK mode con cols=35 lines=20 color 3f cd /d " ...

  5. 第1篇--基于jdk7和jdk8分析 JVM的内存区域

     基于jdk7和jdk8分析 JVM的内存区域 目录 前言 1.什么是JVM 2.JRE/JDK/JVM是什么关系 3.JVM执行程序的过程 4. JVM的生命周期 5.JVM垃圾回收 一.运行时数据 ...

  6. java jdk7,jdk8连接oracle19C数据库ojdbc驱动

    之前程序是连接的oracle11G数据库,由于11G官方不再维护,很多客户升级到了oracle19C, 导致程序连接报错 我这边jdk为1.8 oracle jdbc驱动为 <dependenc ...

  7. 微信企业号接入JDK6和JDK7及JDK8加解密失败处理(Java)

    微信企业号接入JDK6和JDK7及JDK8加解密失败处理(Java) 使用文章 http://blog.csdn.net/omsvip/article/details/39926493 提供的接入代码 ...

  8. windows同时安装jdk7和jdk8

    有时候某个插件只支持jdk7,而电脑又安装的是jdk8,这时需要卸载jdk8再装jdk7,当想用jdk8时又得切换回去.能不能同时安装jdk7和jdk8呢?当然可以,步骤如下: 1.下载并安装jdk7 ...

  9. Java之HashMap系列--JDK7与JDK8的HashMap的区别

    原文网址:Java之HashMap系列--JDK7与JDK8的HashMap的区别_IT利刃出鞘的博客-CSDN博客 简介 本文介绍JDK7与JDK8的HashMap的区别. JDK7与JDK8的Ha ...

最新文章

  1. 一图看清全球270家典型区块链服务商
  2. 重磅!三星宣布3nm成功流片!
  3. Switcher ---Vista Areo 工具
  4. python二十七:从最内部的循环直接跳出来
  5. 一些经典的常用ASP代码[经典简单] (2)
  6. RssTookit使用小结
  7. 滴滴医护专车新增南京 共上线6城覆盖1.8万医护
  8. html a div,为div设置类a与b,应编写HTML代码(??)
  9. C# 客户端时间校准
  10. python深度学习库keras——网络建模全解
  11. Dijkstra算法(朴素,堆优化)+例题
  12. qq表情左右滑动php,基于jQuery实现的QQ表情插件_jquery
  13. Apache虚拟主机配置详细教程
  14. 深圳医疗器械帮;一个军团的诞生
  15. 埃默里大学有计算机专业吗,埃默里大学计算机科学研究生最新专业排名
  16. linux搭建软路由,用 Alpine Linux 搭建软路由
  17. internet时间同步服务器地址(中国国家授时中心)
  18. 秋招面试准备 JS1
  19. 每日一练-游戏通关时间最短
  20. OLAP实践 —— OLAP基本概念理解总计小记

热门文章

  1. php开发微信支付获取用户地址
  2. NDArray自动求导
  3. python基础-装饰器
  4. JScrollPane实现自动滚动到底部
  5. swagger2 注解说明 ( @ApiImplicitParams )
  6. 阿里团队高效沟通的秘密,全在这5点!
  7. 微服务架构下,静态数据通用缓存机制!
  8. 如何写一个清晰明了的Bug
  9. 真正理解 MySQL 的四种隔离级别
  10. STL:priority_queue