精华内容
下载资源
问答
  • java 批量设置实体类集合里面某一个属性值 业务场景: 多个实体类的集合,某一个属性批量统一设值。 例如 :user实体类,包含属性 id、name、sex 现在有100多个user 要把他们sex全部设为 男,一般办法就是把...

    java 批量设置实体类集合里面某一个属性的值

    业务场景:
    多个实体类的集合,某一个属性批量统一设值。

    例如 :user实体类,包含属性 id、name、sex
    现在有100多个user 要把他们的sex全部设为 男,一般的办法就是把这些user装在一个list集合中,然后遍历把值set进去。现在我就把这个功能抽取出来做成了一个工具类,代码如下

    /**
    * 批量设置实体类集合里面某一个属性的值
    * @param entitys    目标实体类集合
    * @param key   目标属性
    * @param value 值
    * @return
    * @throws IllegalAccessException
    */
    public <E> void setValue(List<E> entitys, String key, Object value) throws IllegalAccessException {
       for (Object list:entitys) {
           Class aClass = list.getClass();
           Field[] aFields = aClass.getDeclaredFields();//获取实体类的所有属性
           for (Field f:aFields) {
               if (f.getName().equals(key)){
                   f.setAccessible(true);//设置访问权限
                   f.set(list,value);//赋值
               }
           }
       }
    }
    

    通过java反射机制拿到类所有声明的字段,然后遍历与目标属性的name进行匹配。

    注意:在Java中可以通过反射进行获取实体类中的字段值,当未设置Field的setAccessible方法为true时,会在调用的时候进行访问安全检查,会抛出IllegalAccessException异常。所以set的时候先设置为true

    展开全文
  • 数据库一般就使用父id来表示,为了降低数据库查询压力,我们可以使用Java8中Stream流一次性把数据查出来,然后通过流式处理,我们一起来看看,代码实现为了实现简单,就模拟查看数据库所有数据到List里面。...

    转自Java8新特性-使用Stream流递归实现遍历树形结构–Lcry

    可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理,我们一起来看看,代码实现为了实现简单,就模拟查看数据库所有数据到List里面。

    实体类:Menu.java
    
    /**
     * Menu
     *
     * @author lcry
     * @date 2020/06/01 20:36
     */
    @Data
    @Builder
    public class Menu {
        /**
         * id
         */
        public Integer id;
        /**
         * 名称
         */
        public String name;
        /**
         * 父id ,根节点为0
         */
        public Integer parentId;
        /**
         * 子节点信息
         */
        public List<Menu> childList;
    
    
        public Menu(Integer id, String name, Integer parentId) {
            this.id = id;
            this.name = name;
            this.parentId = parentId;
        }
    
        public Menu(Integer id, String name, Integer parentId, List<Menu> childList) {
            this.id = id;
            this.name = name;
            this.parentId = parentId;
            this.childList = childList;
        }
        
    }
    

    递归组装树形结构:

      @Test
        public void testtree(){
            //模拟从数据库查询出来
            List<Menu> menus = Arrays.asList(
                    new Menu(1,"根节点",0),
                    new Menu(2,"子节点1",1),
                    new Menu(3,"子节点1.1",2),
                    new Menu(4,"子节点1.2",2),
                    new Menu(5,"根节点1.3",2),
                    new Menu(6,"根节点2",1),
                    new Menu(7,"根节点2.1",6),
                    new Menu(8,"根节点2.2",6),
                    new Menu(9,"根节点2.2.1",7),
                    new Menu(10,"根节点2.2.2",7),
                    new Menu(11,"根节点3",1),
                    new Menu(12,"根节点3.1",11)
            );
    
            //获取父节点
            List<Menu> collect = menus.stream().filter(m -> m.getParentId() == 0).map(
                    (m) -> {
                        m.setChildList(getChildrens(m, menus));
                        return m;
                    }
            ).collect(Collectors.toList());
            System.out.println("-------转json输出结果-------");
            System.out.println(JSON.toJSON(collect));
        }
    
        /**
         * 递归查询子节点
         * @param root  根节点
         * @param all   所有节点
         * @return 根节点信息
         */
        private List<Menu> getChildrens(Menu root, List<Menu> all) {
            List<Menu> children = all.stream().filter(m -> {
                return Objects.equals(m.getParentId(), root.getId());
            }).map(
                    (m) -> {
                        m.setChildList(getChildrens(m, all));
                        return m;
                    }
            ).collect(Collectors.toList());
            return children;
        }
    
     Map<String, List<Zone>> zoneByParentIdMap = zoneList.stream().collect(Collectors.groupingBy(Zone::getParentId));
        zoneList.forEach(zone->zone.children = zoneByParentIdMap.get(zone.id));
        return zoneList.stream().filter(v -> v.parentId.equals("0")).collect(Collectors.toList());
    
    展开全文
  • 数据库一般就使用父id来表示,为了降低数据库查询压力,我们可以使用Java8中Stream流一次性把数据查出来,然后通过流式处理,我们一起来看看,代码实现为了实现简单,就模拟查看数据库所有数据到List里面。...

    可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理,我们一起来看看,代码实现为了实现简单,就模拟查看数据库所有数据到List里面。

    实体类:Menu.java

    /**

    * Menu

    *

    * @author lcry

    * @date 2020/06/01 20:36

    */

    @Data

    @Builder

    public class Menu {

    /**

    * id

    */

    public Integer id;

    /**

    * 名称

    */

    public String name;

    /**

    * 父id ,根节点为0

    */

    public Integer parentId;

    /**

    * 子节点信息

    */

    public ListchildList;

    public Menu(Integer id, String name, Integer parentId) {

    this.id = id;

    this.name = name;

    this.parentId = parentId;

    }

    public Menu(Integer id, String name, Integer parentId, ListchildList) {

    this.id = id;

    this.name = name;

    this.parentId = parentId;

    this.childList = childList;

    }

    }

    递归组装树形结构:

    @Test

    public void testtree(){

    //模拟从数据库查询出来

    Listmenus = Arrays.asList(

    new Menu(1,"根节点",0),

    new Menu(2,"子节点1",1),

    new Menu(3,"子节点1.1",2),

    new Menu(4,"子节点1.2",2),

    new Menu(5,"根节点1.3",2),

    new Menu(6,"根节点2",1),

    new Menu(7,"根节点2.1",6),

    new Menu(8,"根节点2.2",6),

    new Menu(9,"根节点2.2.1",7),

    new Menu(10,"根节点2.2.2",7),

    new Menu(11,"根节点3",1),

    new Menu(12,"根节点3.1",11)

    );

    //获取父节点

    Listcollect = menus.stream().filter(m -> m.getParentId() == 0).map(

    (m) -> {

    m.setChildList(getChildrens(m, menus));

    return m;

    }

    ).collect(Collectors.toList());

    System.out.println("-------转json输出结果-------");

    System.out.println(JSON.toJSON(collect));

    }

    /**

    * 递归查询子节点

    * @param root 根节点

    * @param all 所有节点

    * @return 根节点信息

    */

    private ListgetChildrens(Menu root, Listall) {

    Listchildren = all.stream().filter(m -> {

    return Objects.equals(m.getParentId(), root.getId());

    }).map(

    (m) -> {

    m.setChildList(getChildrens(m, all));

    return m;

    }

    ).collect(Collectors.toList());

    return children;

    }

    格式化打印结果:

    747082c43df0865ff915e57932967b7f.png

    展开全文
  • 数据库一般就使用父id来表示,为了降低数据库查询压力,我们可以使用Java8中Stream流一次性把数据查出来,然后通过流式处理,我们一起来看看,代码实现为了实现简单,就模拟查看数据库所有数据到List里面。...

    可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理,我们一起来看看,代码实现为了实现简单,就模拟查看数据库所有数据到List里面。

    实体类:Menu.java

    /**
     * Menu
     *
     * @author lcry
     */
    @Data
    @Builder
    public class Menu {
        /**
         * id
         */
        public Integer id;
        /**
         * 名称
         */
        public String name;
        /**
         * 父id ,根节点为0
         */
        public Integer parentId;
        /**
         * 子节点信息
         */
        public List<Menu> childList;
    
    
        public Menu(Integer id, String name, Integer parentId) {
            this.id = id;
            this.name = name;
            this.parentId = parentId;
        }
    
        public Menu(Integer id, String name, Integer parentId, List<Menu> childList) {
            this.id = id;
            this.name = name;
            this.parentId = parentId;
            this.childList = childList;
        }
        
    }

    递归组装树形结构:

    @Test
    public void testtree(){
        //模拟从数据库查询出来
        List<Menu> menus = Arrays.asList(
                new Menu(1,"根节点",0),
                new Menu(2,"子节点1",1),
                new Menu(3,"子节点1.1",2),
                new Menu(4,"子节点1.2",2),
                new Menu(5,"根节点1.3",2),
                new Menu(6,"根节点2",1),
                new Menu(7,"根节点2.1",6),
                new Menu(8,"根节点2.2",6),
                new Menu(9,"根节点2.2.1",7),
                new Menu(10,"根节点2.2.2",7),
                new Menu(11,"根节点3",1),
                new Menu(12,"根节点3.1",11)
        );
    
        //获取父节点
        List<Menu> collect = menus.stream().filter(m -> m.getParentId() == 0).map(
                (m) -> {
                    m.setChildList(getChildrens(m, menus));
                    return m;
                }
        ).collect(Collectors.toList());
        System.out.println("-------转json输出结果-------");
        System.out.println(JSON.toJSON(collect));
    }
    
    /**
     * 递归查询子节点
     * @param root  根节点
     * @param all   所有节点
     * @return 根节点信息
     */
    private List<Menu> getChildrens(Menu root, List<Menu> all) {
        List<Menu> children = all.stream().filter(m -> {
            return Objects.equals(m.getParentId(), root.getId());
        }).map(
                (m) -> {
                    m.setChildList(getChildrens(m, all));
                    return m;
                }
        ).collect(Collectors.toList());
        return children;
    }

    格式化打印结果:

    展开全文
  • ``` List<User> list = (mybatis、Oracle返回值);...想要一个通用的方法,就是不管List里面的object是什么实体类,这个实体类里面包含多少,都能通过遍历获得list,请问有方法吗?有实例可以参考的最好了,谢谢!
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     Java二进制IO与文件复制操作实例,好像是一本书例子,源代码有是独立运行,与同目录下其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
  •  Collection是集合类的上级接口,继承与他接口主要有Set 和List. Collections是针对集合类的一个帮助,他提供一系列静态方法实现对各种集合搜索、排序、线程安全化等操作。 13、&和&&区别。 &是位运算符...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
     Java二进制IO与文件复制操作实例,好像是一本书例子,源代码有是独立运行,与同目录下其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
     Java二进制IO与文件复制操作实例,好像是一本书例子,源代码有是独立运行,与同目录下其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java二进制IO与文件复制操作实例,好像是一本书例子,源代码有是独立运行,与同目录下其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
  • Java二进制IO与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO与文件复制操作实例,好像是一本书例子,源代码有是独立运行,与同目录下其它代码文件互不联系...
  • java 面试题 总结

    2009-09-16 08:45:34
     Collection是集合类的上级接口,继承与他接口主要有Set 和List. Collections是针对集合类的一个帮助,他提供一系列静态方法实现对各种集合搜索、排序、线程安全化等操作。 10、&和&&区别。 &是位运算符...
  • 如何去掉list集合中重复元素大全创建实体对象模拟集合方法一:遍历实体类的每一个属性方法二:利用list中contains方法去重方法三:java 8中流式去重操作方法四:HashSet去重 问题由来,在平常开发中我们经常用到导入...
  • Java二进制IO与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO与文件复制操作实例,好像是一本书例子,源代码有是独立运行,与同目录下其它代码文件互不联系...
  • Java二进制IO与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO与文件复制操作实例,好像是一本书例子,源代码有是独立运行,与同目录下其它代码文件互不联系...
  • 里面可以指定数据类型,或者存放实体类 3.ArrayList集合常用方法(案例列举) list.get(i)获取指定索引位置值 存储字符串并遍历案例 package com.ei.arraylist; import java.util.ArrayList; /** * @author ...
  • 抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确构造函数。 41.构造器Constructor是否可被override? 答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被...
  • asp.net知识库

    2015-06-18 08:45:45
    如何判断ArrayList,Hashtable,SortedList对象是否相等 帮助解决网页和JS文件中中文编码问题小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象属性和方法——性能和灵活性兼备方法 消除由try/...
  • 最先进的实体链接库、BertPunc:基于BERT的最先进标点修复模型、Tokenizer:快速、可定制的文本词条化库、中文语言理解测评基准,包括代表性的数据集、基准(预训练)模型、语料库、排行榜、spaCy 医学文本挖掘与信息...
  • ORACLE用户是学习ORACLE数据库中基础知识,下面就介绍下系统常用默认ORACLE用户: 1. sys用户:超级用户,完全是个SYSDBA(管理数据库人)。拥有dba,sysdba,sysoper等角色或权限。是oracle权限最高用户,...

空空如也

空空如也

1 2
收藏数 21
精华内容 8
关键字:

java遍历list里面的实体类

java 订阅