美文网首页
对二级数据统计并返回算法

对二级数据统计并返回算法

作者: 墨色尘埃 | 来源:发表于2019-02-01 10:09 被阅读6次

有这样一组数据,需要将数据中的二级目录查询出来,并对二级目录的次数进行统计


image.png

最后的结构如下:

{
    "data": [
        {
            "fullname": "办公室", 
            "fullcode": "32010002", 
            "registerNum": "0", 
            "verifyNum": "0", 
            "verifyNotNum": "0", 
            "deleteNum": "0"
        }, 
        {
            "fullname": "人力资源部", 
            "fullcode": "32010003", 
            "registerNum": "0", 
            "verifyNum": "0", 
            "verifyNotNum": "0", 
            "deleteNum": "0"
        }, 

              ..............

        {
            "fullname": "高淳区分公司", 
            "fullcode": "320125", 
            "registerNum": "0", 
            "verifyNum": "0", 
            "verifyNotNum": "0", 
            "deleteNum": "0"
        }
    ], 
    "error": null
}

方法①

对于这样的数据结构,应该想到使用Map来做,key为fullName中的二级目录+fullCode中的二级目录,即key="办公室|32010002"

 List<TotalInfo> eligibleInfo = appInfoMapper.getEligibleDetail(startTime, endTime, fullCode);

 Map<String, TotalInfo> result = new LinkedHashMap<>();
 for (TotalInfo totalInfo : eligibleInfo) {
     String key = totalInfo.getFullname().split("/")[1] + "|" + totalInfo.getFullcode().split("/")[1];
     if (result.containsKey(key)) {
         Integer registerNum = Integer.valueOf(totalInfo.getRegisterNum());
         Integer registerNum1 = Integer.valueOf(result.get(key).getRegisterNum());
         registerNum1 += registerNum;
         result.get(key).setRegisterNum(registerNum1 + "");

         Integer verifyNum = Integer.valueOf(totalInfo.getVerifyNum());
         Integer verifyNum1 = Integer.valueOf(result.get(key).getVerifyNum());
         verifyNum1 += verifyNum;
         result.get(key).setVerifyNum(verifyNum1 + "");

         Integer verifyNotNum = Integer.valueOf(totalInfo.getVerifyNotNum());
         Integer verifyNotNum1 = Integer.valueOf(result.get(key).getVerifyNotNum());
         verifyNotNum1 += verifyNotNum;
         result.get(key).setVerifyNotNum(verifyNotNum1 + "");

         Integer deleteNum = Integer.valueOf(totalInfo.getDeleteNum());
         Integer deleteNum1 = Integer.valueOf(result.get(key).getDeleteNum());
         deleteNum1 += deleteNum;
         result.get(key).setDeleteNum(deleteNum1 + "");
     } else {
         TotalInfo newTest = new TotalInfo();
         newTest.setFullname(totalInfo.getFullname().split("/")[1]);
         newTest.setFullcode(totalInfo.getFullcode().split("/")[1]);
         newTest.setRegisterNum(totalInfo.getRegisterNum());
         newTest.setVerifyNum(totalInfo.getVerifyNum());
         newTest.setVerifyNotNum(totalInfo.getVerifyNotNum());
         newTest.setDeleteNum(totalInfo.getDeleteNum());
         result.put(key, newTest);
     }
 }

 List<TotalInfo> list = new ArrayList<>();
 list.addAll(result.values()); // TODO: 2019/1/31
 return new ResponseObj<>(list, null);  

方法②

使用双重for循环,但是随着结果集result的数据越来越多,循环的次数也越来越多,相比于第一种方法,时间复杂度是o(n)。第一种方法只需要对Map进行遍历即可

        //元数据
        List<TotalInfo> list = new ArrayList();
        //结果
        List<TotalInfo> result = new ArrayList<>();
        for (TotalInfo source : list) {
            boolean isFind = false;
            for (TotalInfo dest : result) {
                if (source.getFullname().split("/")[1] == dest.getFullname().split("/")[1] && source != dest) {

                    Integer reportNum = Integer.valueOf(source.getReportNum());
                    Integer reportNum1 = Integer.valueOf(dest.getReportNum());
                    reportNum1 += reportNum;
                    dest.setReportNum(reportNum1 + "");

                    Integer appReportNum = Integer.valueOf(source.getAppReportNum());
                    Integer appReportNum1 = Integer.valueOf(dest.getAppReportNum());
                    appReportNum1 += reportNum;
                    dest.setAppReportNum(appReportNum1 + "");

                    isFind = true;
                }
            }
            if (!isFind) {
                result.add(source);
            }
        }
        return result;

TotalInfo

package zhab.model;

import com.fasterxml.jackson.annotation.JsonInclude;

/**
 * Created by hjh on 2019/1/13.
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
public class TotalInfo {
    private String fullname;
    private String fullcode;
    private String num;
    private String report;


    private String reportNum; //上报数量
    private String appReportNum; //App上报数量
    private String rectifyPdNum; //整改派单
    private String rectifyZhNum; //整改中
    private String rectifyWcNum; //整改完成

    private String publishNum;//信息发布
    private String appPublishNum;//App信息发布

    private String registerNum;//注册人数
    private String verifyNum;//审核通过人数
    private String verifyNotNum;//未审核人数
    private String deleteNum;//删除人数

    public String getAppPublishNum() {
        return appPublishNum;
    }

    public void setAppPublishNum(String appPublishNum) {
        this.appPublishNum = appPublishNum;
    }

    public String getReportNum() {
        return reportNum;
    }

    public void setReportNum(String reportNum) {
        this.reportNum = reportNum;
    }

    public String getRegisterNum() {
        return registerNum;
    }

    public void setRegisterNum(String registerNum) {
        this.registerNum = registerNum;
    }

    public String getVerifyNum() {
        return verifyNum;
    }

    public void setVerifyNum(String verifyNum) {
        this.verifyNum = verifyNum;
    }

    public String getVerifyNotNum() {
        return verifyNotNum;
    }

    public void setVerifyNotNum(String verifyNotNum) {
        this.verifyNotNum = verifyNotNum;
    }

    public String getDeleteNum() {
        return deleteNum;
    }

    public void setDeleteNum(String deleteNum) {
        this.deleteNum = deleteNum;
    }


    public String getPublishNum() {
        return publishNum;
    }

    public void setPublishNum(String publishNum) {
        this.publishNum = publishNum;
    }

    public String getAppReportNum() {
        return appReportNum;
    }

    public void setAppReportNum(String appReportNum) {
        this.appReportNum = appReportNum;
    }

    public String getRectifyPdNum() {
        return rectifyPdNum;
    }

    public void setRectifyPdNum(String rectifyPdNum) {
        this.rectifyPdNum = rectifyPdNum;
    }

    public String getRectifyZhNum() {
        return rectifyZhNum;
    }

    public void setRectifyZhNum(String rectifyZhNum) {
        this.rectifyZhNum = rectifyZhNum;
    }

    public String getRectifyWcNum() {
        return rectifyWcNum;
    }

    public void setRectifyWcNum(String rectifyWcNum) {
        this.rectifyWcNum = rectifyWcNum;
    }

    public String getReport() {
        return report;
    }

    public void setReport(String report) {
        this.report = report;
    }

    public String getFullname() {
        return fullname;
    }

    public void setFullname(String fullname) {
        this.fullname = fullname;
    }

    public String getFullcode() {
        return fullcode;
    }

    public void setFullcode(String fullcode) {
        this.fullcode = fullcode;
    }


    public String getNum() {
        return num;
    }

    public void setNum(String num) {
        this.num = num;
    }
}


相关文章

  • 对二级数据统计并返回算法

    有这样一组数据,需要将数据中的二级目录查询出来,并对二级目录的次数进行统计 最后的结构如下: 方法① 对于这样的数...

  • 统计学习方法(李航)---第一章

    (一)统计学习三要素:模型、策略、算法 (二)统计学习: 1.定义:基于数据建立概率统计模型并运用模型对数据进行预...

  • 机器学习-6 Logistic Regression【附代码】

    返回主页 Logistic Regression 是统计学习的经典分类算法,是一种 对数线性模型。 1、数据集与特...

  • mongodb聚合

    MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点...

  • mongodb聚合

    MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点...

  • mongoDB聚合管道

    MongoDB 聚合 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回...

  • mongoDB入门三

    聚合(aggregate) mongoDB中的聚合主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结...

  • 贝叶斯建模

    贝叶斯分类算法,是统计学的一种分类方法,它是利用贝叶斯定理的概率统计知识,对离散型的数据进行分类的算法优点:算法易...

  • 三、时间复杂度与空间复杂度

    数据结构目录 1.算法的度量方法 (1).事后统计方法:先设计并编写好,运行后统计时间 缺陷:必须先耗费精力编写好...

  • R包:phyloseq: 扩增子统计分析利器

    phyloseq: 扩增子统计分析利器 phyloseq包对多类型数据的综合软件,并其对这些数据提供统计分析和可视...

网友评论

      本文标题:对二级数据统计并返回算法

      本文链接:https://www.haomeiwen.com/subject/bwmrsqtx.html