Java将List中的实体按照某个字段进行分组的算法

public void test() {
        List<User> list = new ArrayList<>();
        //User 实体 测试用 String id,name;
        //当前测试以id来分组,具体请按开发场景修改
        list.add(new User("1", "1"));
        list.add(new User("1", "2"));
        list.add(new User("2", "2"));
        list.add(new User("2", "3"));
        list.add(new User("2", "4"));
        list.add(new User("3", "3"));

        //初始化一个map
        Map<String, List<User>> map = new HashMap<>();
        for(User user : list) {
            String key = user.getId();
            if(map.containsKey(key)) {
                //map中存在以此id作为的key,将数据存放当前key的map中
                map.get(key).add(user);
            } else {
                //map中不存在以此id作为的key,新建key用来存放数据
                List<User> userList = new ArrayList<>();
                userList.add(user);
                map.put(key, userList);
            }
        }
        //分组结束,map中的数据就是分组后的数据}

原文地址:https://www.cnblogs.com/QW-lzm/p/12217066.html

时间: 2024-10-20 05:08:18

Java将List中的实体按照某个字段进行分组的算法的相关文章

【Java】将List中的实体按照某个字段进行分组的算法

public void test() { List<User> list = new ArrayList<>(); //User 实体 测试用 String id,name; //当前测试以id来分组,具体请按开发场景修改 list.add(new User("1", "1")); list.add(new User("1", "2")); list.add(new User("2"

Java SE环境中测试JPA实体的简单方法

Java SE环境中测试JPA实体的简单方法 出于软件质量的考虑,理论上来说我们写的一切代码都要经过测试.JPA的测试不像普通的组件那么方便,因为JPA涉及到数据库,所以集成测试必不可少,像Arquillian这样的测试框架能处理比较复杂的集成测试,但是它的配置相对也更复杂一点,所以本篇文章主要讲一下在Java SE环境中较简单地测试JPA实体(Entity)的方法. 我们需要实现的目标有:1.不需要mysql这样需要额外安装的数据库:2.在SE环境中可以直接测试. 相关工具我们主要用到JUni

Java中遍历实体类(处理MongoDB)

在实际过程中,经常要将实体类进行封装,尤其是处理数据库的过程中:因此,对于遍历实体类能够与数据库中的一行数据对应起来. 我是使用的环境是Spring boot,访问的数据库时MongoDB 实体类遍历: 1 //java中遍历实体类,获取属性名和属性值 2 public static void testReflect(Object model) throws Exception{ 3 for (Field field : model.getClass().getDeclaredFields())

使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法

Java提供了Class类,可以通过编程方式获取类别的字段和方法,包括构造方法 获取Class类实例的方法: 类名.class 实例名.getClass() Class.forName(className) public class RefTest { @Test public void testRef(){ //Class cls = RefTest.class; //Class.forName("com.jboa.service.RefTest"); //new RefTest()

领域模型中的实体类分为四种类型:VO、DTO、DO、PO

http://kb.cnblogs.com/page/522348/ 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念: 概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来. DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布

Java和C#中的接口对比(有你不知道的东西)

Java和C#中的接口对比(有你不知道的东西) 1.与Java不同,C#中的接口不能包含字段(Field). 在java中,接口中可以包含字段,但是这些字段隐式地是static和final的.而C#不允许接口中有字段,编译器在编译时就会提示错误(如下代码所示). interface IInterface { int a ;//编译器错误提示:接口不能包含字段 } 2.在C#和Java中,接口内的所有方法默认都是公用方法. 在Java中,方法声明可以带有public修饰符(即使这并非必要),但在C

netBeans中从实体创建Restful webservice工程

分布式系统和移动计算...... 这学期上的课,名字听起来是不是很霸气? 然而 其实就是 restful 和 安卓...... 汗....... 用的IDE还是netBeans, 第一次听说有这个IDE.上课课件都是英文, 蛋疼,还是在博客上总结下吧. 注: 我用的netBeans版本是8.2 需要jdk8以上才行.用里面自带的classfish服务器,需要4.1版本,因为老师说4.1.1 版本有BUG netBeans中创建webservice工程步骤: 1. 创建java web工程 其余都

转:领域模型中的实体类分为四种类型:VO、DTO、DO、PO

经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析.得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应于除二者之外需要进行传递的数据.一.实体类百度百科中对于实体类的定义如下:实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关.根据以上定义,我们可以了解到,实体类有两方面内容,存储数据和执行

在java的GUI中暂停、继续其他线程的方法

在java GUI中,如果想通过某个按钮或其他用户可交互控控制件主线程之外的线程的暂停和继续,怎么办呢?这是我想到的一个办法. 这里提供一个java API文档链接:http://docs.oracle.com/javase/8/docs/api/index.html.参考里面的java.lang包中的Thread类,此类的suspend不推荐,用着方法是不安全的.其实每个对象都有一个wait()反法,我们就用这个方法. 自己建立一个类继承Thread类,里面定义两个变量: 1 public O