• java前后端对象集合去重


    前端需求:存放五个对象的数组,根据对象的id属性去重,并组成一个新的数组

    五个对象:

    let userArr = [
        {id: '1', name: '张三'}, 
         {id: '2', name: '李四'}, 
         {id: '1', name: '王五'}, 
         {id: '3', name: '赵六'}, 
         {id: '3', name: '田七'}, 
    ];

    代码:使用数组的reduce()方法

    /**
     * reduce方法有两个参数,一个是回调函数,一个是初始值
     * 回调函数有两个参数,这里的cur是初始值,对应reduce的第二个参数,
     * next是数组的下一个元素,即userArr的下一个元素,从第一个开始
     */
    userArr.reduce((cur, next) => {
        //如果cur不包含如何元素,则next和cur中的元素就不存在重复的现象,即可以直接把next添加到cur中
        if(cur.length == 0){
            cur.push(next);
            return cur;
        }
        //遍历cur数组,判断next是否已经存在cur中
        let judge = true;
        for(let i of cur){
            if(i.id == next.id){
                //如果已经存在,judge变成false
                judge = false;
            }
        }
        //如果不存在,则将next添加到cur中
        judge ? cur.push(next) : '';
        return cur;
    }, []);

    后端需求:有一个存放Users对象的List集合,需要根据每个用户的id属性去重,并组合成一个新的Users对象的List集合

    五个Users对象:

    Users user1 = new Users();
    user1.setId("1");
    user1.setName("张三");
    
    Users user2 = new Users();
    user2.setId("2");
    user2.setName("李四");
    
    Users user3 = new Users();
    user3.setId("1");
    user3.setName("王五");
    
    Users user4 = new Users();
    user4.setId("3");
    user4.setName("赵六");
                
    Users user5 = new Users();
    user5.setId("2");
    user5.setName("田七");

    代码:使用Map集合的key唯一性:

    List<Users> list = Arrays.asList(user1, user2, user3, user4, user5);
    Map<String, Users> map = new HashMap();
    //在遍历过程中,如果map中已经存在了i.getId()这个key,那么将会替换掉之前那个对象
    list.stream().forEach(i -> map.put(i.getId(), i));
    //将map中的Users对象重新组装成List
    List<Users> newList = new ArrayList();
    map.keySet().stream().forEach(i -> newList.add(map.get(i)));
  • 相关阅读:
    hibernate和spring学习
    php代码规范
    MySQL TEXT数据类型的最大长度
    开发接口、接口设计心得
    构建之法读书笔记03——软件工程师的成长
    构建之法读书笔记02——个人技术和流程
    javaweb1(小学生四则运算)
    构建之法读书笔记01——概论
    软概(lesson 2):课堂测试
    软概(lesson 1):Javaweb实现用户登录界面
  • 原文地址:https://www.cnblogs.com/zhangcaihua/p/13630761.html
Copyright © 2020-2023  润新知