首页 > 编程语言 >【转载】Java List对象集合按对象属性分组、分组汇总、过滤等操作示例

【转载】Java List对象集合按对象属性分组、分组汇总、过滤等操作示例

时间:2022-11-23 18:04:26浏览次数:51  
标签:Java String 示例 list PersonData 分组 type public name

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
 
public class Test {
    public static void main(String[] args){
        List<PersonData> list = new ArrayList<PersonData>();
        PersonData p1 = new PersonData();
        p1.setId("1");
        p1.setName("张三");
        p1.setType("管理员");
        p1.setAge(20);
        list.add(p1);
 
        PersonData p2 = new PersonData();
        p2.setId("2");
        p2.setName("李四");
        p2.setType("管理员");
        p2.setAge(30);
        list.add(p2);
 
        PersonData p3 = new PersonData();
        p3.setId("3");
        p3.setName("王五");
        p3.setType("用户");
        p3.setAge(40);
        list.add(p3);
 
        PersonData p4 = new PersonData();
        p4.setId("4");
        p4.setName("马六");
        p4.setType("访客");
        p4.setAge(50);
        list.add(p4);
 
        //跟据某个属性分组
        Map<String, List<PersonData>> collect = list.stream().collect(Collectors.groupingBy(PersonData::getType));
        System.out.println(collect);
        
        //根据某个属性分组,汇总某个属性
        Map<String, Integer> collect2 = list.stream().collect(Collectors.groupingBy(PersonData::getType,Collectors.summingInt(PersonData::getAge)));
        System.out.println(collect2);
        
        //根据某个属性添加条件过滤数据,
        list = list.stream().filter(u -> !u.getType().equals("访客")).collect(Collectors.toList());
        System.out.println(list);
        
        //判断一组对象里面有没有属性值是某个值
        boolean add = list.stream().anyMatch(m -> "王五".equals(m.getName()));
        System.out.println(add);
        
        //取出一组对象的某个属性组成一个新集合
        List<String> names=list.stream().map(PersonData::getName).collect(Collectors.toList());
        System.out.println(names);
    }
}
 结果输出:

    {用户=[com.test4.PersonData@19a45b3], 访客=[com.test4.PersonData@99a589], 管理员=[com.test4.PersonData@372a00, com.test4.PersonData@dd8dc3]}
    {用户=40, 访客=50, 管理员=50}
    [com.test4.PersonData@372a00, com.test4.PersonData@dd8dc3, com.test4.PersonData@19a45b3]
    true
    [张三, 李四, 王五]

 

 
public class PersonData {
    private String id;
    private String type;
    private String name;
    private int age;
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public String getType() {
        return type;
    }
 
    public void setType(String type) {
        this.type = type;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    public PersonData(String id, String type, String name, int age) {
        super();
        this.id = id;
        this.type = type;
        this.name = name;
        this.age = age;
    }
 
    public PersonData() {
 
    }
}
 
————————————————
版权声明:本文为CSDN博主「艾利克斯冰」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_18237141/article/details/124007207

标签:Java,String,示例,list,PersonData,分组,type,public,name
From: https://www.cnblogs.com/haohaiyou/p/16919260.html

相关文章

  • 学习Java应该如何更快掌握
    学习Java    首先要想学Java,毋庸置疑的是,在你学习Java一定要有耐心。与此可以沉的下心更容易在其中钻研进步,Java学习只要找对方法难度都不是很高的,建议在学习前先了......
  • 【Bug】No validator... javax.validation.constraints.NotBlank validating type jav
    经检查,是因为在Integer类型的字段上加了@NotBlank的校验注解,而该注解只能用于字符串类型,因此报类型不匹配异常@NotBlank(message="整季量不能为空")privateInteger......
  • 高级Java面试问题列表
    这是我收集的10道高级Java面试问题列表。这些问题主要来自Java核心部分,不涉及JavaEE相关问题。你可能知道这些棘手的Java问题的答案,或者觉得这些不足以挑战你的J......
  • Java阻塞队列中的异类,SynchronousQueue底层实现原理剖析
    上篇文章谈到BlockingQueue的使用场景,并重点分析了ArrayBlockingQueue的实现原理,了解到ArrayBlockingQueue底层是基于数组实现的阻塞队列。但是BlockingQueue的实现类中,有......
  • java值传递
    java是值传递还是引用传递值传递​ 是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数引用传递​ 是指在调用函......
  • 【转载】Java stream对List对象进行分组聚合操作:求和、平均值、最大值、最小值,BigDeci
    packagecom.kabka.test;importcn.hutool.json.JSONUtil;importlombok.extern.slf4j.Slf4j;importorg.junit.jupiter.api.Test;importjava.math.BigDecimal;importjav......
  • Java特性和优势
    简单性与C语言不同,Java是一种面向对象编程的语言,他的底层借鉴了C++语言但又不是完全相同,Java语言并不支持多继承、指针、goto语句、操作符重载、头文件等,但其语法基于C语......
  • java web开发(和vue联合开发)
        前面我们谈到了很多次vue,也说到了vue的很多优点。比如说,vue实现了mvc中全部v的功能,也就是view的部分。这样,后端开发就变得很简单,前后端之间只要实现json数据的......
  • Java + Lua = 王炸!!
    我们写东西的时候总会遇到lua中要调用java代码,当然这个用JNI肯定是可以做到的,但是有更加方便的办法—LuaJavaBridge。一、luaj主要特征*可以从Lua调用JavaClassS......
  • Java 注解和反射(一)注解
    一,注解(Annotation)顾名思义,注解,注释解释什么是注解?··Annotation是从JDK5.0开始引入的技术··Annotation的作用:1.不是程序本身,可以对程序做出解释(这一点和注释......