关于Jdk7与Jdk8对Collections进行分组的区别
先准备一点数据:
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进行分组的区别相关推荐
- java8 collections_关于Jdk7与Jdk8对Collections进行分组的区别
先准备一点数据: public class User { private Integer id; private String type; private String name; private S ...
- JDK7与JDK8中HashMap的实现
JDK7中的HashMap HashMap底层维护一个数组,数组中的每一项都是一个Entry 1 transient Entry<K,V>[] table; 我们向 HashMap 中所放 ...
- Java集合:JDK7与JDK8中HashMap的实现
JDK7中的HashMap HashMap底层维护一个数组,数组中的每一项都是一个Entry transient Entry<K,V>[] table; 我们向 HashMap 中所放置的 ...
- java 8代码 改 java7_Window安装JDK7和JDK8,并一键切换
脚本代码:(保存成.bat文件直接运行就可以了.)代码如下: @echo off title 修改JDK mode con cols=35 lines=20 color 3f cd /d " ...
- 第1篇--基于jdk7和jdk8分析 JVM的内存区域
基于jdk7和jdk8分析 JVM的内存区域 目录 前言 1.什么是JVM 2.JRE/JDK/JVM是什么关系 3.JVM执行程序的过程 4. JVM的生命周期 5.JVM垃圾回收 一.运行时数据 ...
- java jdk7,jdk8连接oracle19C数据库ojdbc驱动
之前程序是连接的oracle11G数据库,由于11G官方不再维护,很多客户升级到了oracle19C, 导致程序连接报错 我这边jdk为1.8 oracle jdbc驱动为 <dependenc ...
- 微信企业号接入JDK6和JDK7及JDK8加解密失败处理(Java)
微信企业号接入JDK6和JDK7及JDK8加解密失败处理(Java) 使用文章 http://blog.csdn.net/omsvip/article/details/39926493 提供的接入代码 ...
- windows同时安装jdk7和jdk8
有时候某个插件只支持jdk7,而电脑又安装的是jdk8,这时需要卸载jdk8再装jdk7,当想用jdk8时又得切换回去.能不能同时安装jdk7和jdk8呢?当然可以,步骤如下: 1.下载并安装jdk7 ...
- Java之HashMap系列--JDK7与JDK8的HashMap的区别
原文网址:Java之HashMap系列--JDK7与JDK8的HashMap的区别_IT利刃出鞘的博客-CSDN博客 简介 本文介绍JDK7与JDK8的HashMap的区别. JDK7与JDK8的Ha ...
最新文章
- 一图看清全球270家典型区块链服务商
- 重磅!三星宣布3nm成功流片!
- Switcher ---Vista Areo 工具
- python二十七:从最内部的循环直接跳出来
- 一些经典的常用ASP代码[经典简单] (2)
- RssTookit使用小结
- 滴滴医护专车新增南京 共上线6城覆盖1.8万医护
- html a div,为div设置类a与b,应编写HTML代码(??)
- C# 客户端时间校准
- python深度学习库keras——网络建模全解
- Dijkstra算法(朴素,堆优化)+例题
- qq表情左右滑动php,基于jQuery实现的QQ表情插件_jquery
- Apache虚拟主机配置详细教程
- 深圳医疗器械帮;一个军团的诞生
- 埃默里大学有计算机专业吗,埃默里大学计算机科学研究生最新专业排名
- linux搭建软路由,用 Alpine Linux 搭建软路由
- internet时间同步服务器地址(中国国家授时中心)
- 秋招面试准备 JS1
- 每日一练-游戏通关时间最短
- OLAP实践 —— OLAP基本概念理解总计小记