zoukankan      html  css  js  c++  java
  • 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)));
  • 相关阅读:
    代理模式以及operator>()的重载
    asp.net 2.0中gridview里嵌套dropdownlist
    .Net的编码规范
    Google GMail使用技巧
    推荐一些我经常参考的ASP.NET2.0的学习网站
    petShop 4.0 的命名空间 以及各个项目模块的说明
    超强口误
    当每次鼠标点选GRIDVIEW每行的文本框时,该行会加亮
    ASP.NET2.0中Gridview中数据操作技巧
    ASP.NET中的DataGrid控件示例
  • 原文地址:https://www.cnblogs.com/zhangcaihua/p/13630761.html
Copyright © 2011-2022 走看看