Map<String, List<User>> userMap = list.stream().collect(Collectors.groupingBy(User::getGroup));

示例:

public class HelloWorld {

    public static void main(String[] args) {
Random random = new Random();
List<User> list = new ArrayList<>();
for(int i=1;i<=20;i++) {
String group = (random.nextInt(3) + 1) + "组";//1-3组随机
User u = new User(i, "用户-" + i, group);
list.add(u);
} //按group属性分组
Map<String, List<User>> userMap = list.stream().collect(Collectors.groupingBy(User::getGroup)); System.out.println("分组后:" + userMap);
}
private static class User{
Integer id;
String name;
String group; public User(Integer id, String name, String group) {
this.id = id;
this.name = name;
this.group = group;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getGroup() {
return group;
} public void setGroup(String group) {
this.group = group;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", group='" + group + '\'' +
'}';
}
} }

执行结果:

{
3 组 = [User {
id = 2, name = '用户-2', group = '3组'
}, User {
id = 5, name = '用户-5', group = '3组'
}, User {
id = 7, name = '用户-7', group = '3组'
}, User {
id = 8, name = '用户-8', group = '3组'
}, User {
id = 9, name = '用户-9', group = '3组'
}, User {
id = 12, name = '用户-12', group = '3组'
}, User {
id = 13, name = '用户-13', group = '3组'
}, User {
id = 15, name = '用户-15', group = '3组'
}, User {
id = 16, name = '用户-16', group = '3组'
}],
2 组 = [User {
id = 1, name = '用户-1', group = '2组'
}, User {
id = 17, name = '用户-17', group = '2组'
}, User {
id = 18, name = '用户-18', group = '2组'
}, User {
id = 20, name = '用户-20', group = '2组'
}],
1 组 = [User {
id = 3, name = '用户-3', group = '1组'
}, User {
id = 4, name = '用户-4', group = '1组'
}, User {
id = 6, name = '用户-6', group = '1组'
}, User {
id = 10, name = '用户-10', group = '1组'
}, User {
id = 11, name = '用户-11', group = '1组'
}, User {
id = 14, name = '用户-14', group = '1组'
}, User {
id = 19, name = '用户-19', group = '1组'
}]
}

java8 按对象属性值分组的更多相关文章

  1. java8 按对象属性值排序

    //按id从小到大 List<User> sortUser = list.stream().sorted((u1, u2) -> u1.getId().compareTo(u2.ge ...

  2. 更新AD对象属性值

    1. 对于Set-ADUser不包含的对象属性,可以采用replace来操作 Set-ADUser -Identity 'UserA' -Replace @{userWorkstations = 'C ...

  3. Struts2 用 s:if test 判断String类型的对象属性值和单字符是否相等的问题

    Struts2 用 s:if test 判断String类型的对象属性值和单字符是否相等的问题   首先,这里所指的单字符形如:Y,男. 有两种做法: a. <s:if test='news.s ...

  4. C#通过属性名字符串获取、设置对象属性值

    之前理工项目从这个博客找到了相对应的方法:C#通过属性名字符串获取.设置对象属性值 https://www.cnblogs.com/willingtolove/p/12198871.html

  5. 关于Javascript中通过实例对象修改原型对象属性值的问题

    Javascript中的数据值有两大类:基本类型的数据值和引用类型的数据值. 基本类型的数据值有5种:null.undefined.number.boolean和string. 引用类型的数据值往大的 ...

  6. java 获取实体类对象属性值的方法

    在java中我们要获得实体类对象的属性,一般情况是将实体类中的属性私有化,然后再对外提供get()与set()方法,然后再获取实体类对象的属性的时候先把对象new出来,再用变量名.get()的方法得到 ...

  7. 用反射的形式将一个对象属性值赋值给另一个对象,省略点get/set方法的冗余代码

    1.本例使用的是idea 首先需要在idea中安装lombok插件,省略getter和setter方法的书写 在maven项目中加入lombok依赖 <dependency> <gr ...

  8. C# 反射(GetType) 获取动态Json对象属性值的方法

    之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊! 然后今天我再上网找了找,被我找到了,跟大家分享一下. 其实原理并不复 ...

  9. js操作对象属性值为字符串

    今天在项目开发中遇到一个没遇到过的问题,这个问题是需要对比两个对象a和b,a是一个只有一个属性的对象,b是一个含有多个属性对象,如果b中包含和a一模一样的属性名和值,则把这个一样的属性和值从b中删除了 ...

随机推荐

  1. web框架。Django--

    一,DIY一个web框架 1.1什么是web框架 1.2用socket模拟B-S的服务端 1.3,浏览器端的network查看 1.4,request格式 1.5,response格式 1.6,初识w ...

  2. 25 python 初学(socket,socketserver)

    参考blog :www.cnblogs.com/yuanchenqi/articles/5692716.html 1. sk = socket.socket() 里面有两个重要的参数,family 和 ...

  3. linux目录1

    1.linux常用快捷键 2.linux命令之vmstat 3.linux命令之df 4.linux命令之netstat 5.linux命令之 tar 6.The authenticity of ho ...

  4. VLAN模式

    一 二层基础知识 1.1 vlan介绍 本小节重点: vlan的含义 vlan的类型 交换机端口类型 vlan的不足 1.1.1:vlan的含义 局域网LAN的发展是VLAN产生的基础,因而先介绍一下 ...

  5. Github 上 Star 最多的个人 Spring Boot 开源学习项目

    2016年,在一次技术调研的过程中认识到了 Spring Boot ,试用之后便一发不可收拾的爱上它.为了防止学习之后忘记,就在网上连载了 Spring Boot 系列文章,没想到这一开始便与 Spr ...

  6. JS 设计模式一 -- 原型模式

    原型模式 概念: 原型模式 是指原型实例指向创建对象的种类,并通过拷贝这些原型创建新的对象,是一种用来创建对象的模式,也就是创建一个对象作为另一个对象的prototype属性. 实现原型模式: 方法一 ...

  7. Jmeter录制手机app脚本

    转:http://www.cnblogs.com/yangxia-test/p/5484616.html   环境准备: 1.手机 2.wifi 3.Jmeter   具体步骤: 1.启动Jmeter ...

  8. win10设置操作备忘

    添加密码, 更改密码: Win键-->左侧用户图标-->更改帐户设置-->登陆选项-->添加密码 | 更改密码

  9. springboot +thymeleaf+myql 记录

    thymeleaf官方文档: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.pdf demo案例:https://github. ...

  10. python中self和cls的区别

    1.self表示一个具体的实例本身.如果用了staticmethod,那么就可以无视这个self,将这个方法当成一个普通的函数使用. 2.cls表示这个类本身. >>> class ...