国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java 動態(tài)數(shù)據(jù)統(tǒng)計圖】前后端對接數(shù)據(jù)格式(Map返回數(shù)組格式數(shù)據(jù))六(120)

這篇具有很好參考價值的文章主要介紹了【Java 動態(tài)數(shù)據(jù)統(tǒng)計圖】前后端對接數(shù)據(jù)格式(Map返回數(shù)組格式數(shù)據(jù))六(120)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

說明
前端使用:vue3.0 ECharts可視化庫
前后端對接數(shù)據(jù)格式:無非就是前端把后端返回的數(shù)據(jù)處理為自己想要的格式,或者,后端給前端處理好想要的格式;
針對前后端的柱狀圖,趨勢圖等數(shù)據(jù)對接,前端一般需要數(shù)組格式;
我們之前返回的數(shù)據(jù)格式是LIst Map
舉例:動態(tài)數(shù)據(jù)統(tǒng)計思路案例(動態(tài),排序,containsKey)五(117)
如圖所示;
【Java 動態(tài)數(shù)據(jù)統(tǒng)計圖】前后端對接數(shù)據(jù)格式(Map返回數(shù)組格式數(shù)據(jù))六(120),java,java,開發(fā)語言
而我們需要數(shù)組格式:
后端代碼處理:

	@Override
    public Map<String,Object> getTimeData(HttpServletRequest request, Map<String, Object> paramMap) {
        List<Map<String,Object>> list = getCountData(request,paramMap);
        list = list.stream().filter(e -> (e.get("status").equals("關(guān)閉"))).collect(Collectors.toList());

        // Map存儲:(region,num),num為相同region的加和;
        Map<String,Object> regionMap = new LinkedHashMap<>();

        // Map存儲:(region,統(tǒng)計次數(shù)),統(tǒng)計次數(shù)為相同region的次數(shù);
        Map<String,Object> countMap = new LinkedHashMap<>();

        for (int i = 0; i < list.size(); i++) {
            String region = String.valueOf(list.get(i).get("region"));
            String num = String.valueOf(list.get(i).get("processTime"));
            // regionMap包含region:將region當(dāng)作key;
            if(regionMap.containsKey(region)) {
                String key = region;
                String value = String.valueOf(regionMap.get(key));  // 從regionMap獲取value值;即地域?qū)?yīng)的num值;
                regionMap.put(region, Double.parseDouble(value) + Double.parseDouble(num));
            }
            else {  // 不包含,直接存進去
                regionMap.put(region, num);
            }
            // countMap包含region:將region當(dāng)作key;
            if(countMap.containsKey(region)) {
                String key2 = region;
                String value2 = String.valueOf(countMap.get(key2));  // 從countMap獲取value值;即地域?qū)?yīng)的統(tǒng)計次數(shù)值;
                countMap.put(region, Integer.valueOf(value2) + 1);
            }
            else {  // 不包含,直接存進去
                countMap.put(region, 1);
            }
        }

        List<String> regionList = new LinkedList<String>();  // 地域
        List<String> numberList = new LinkedList<String>();  // 數(shù)值
        List<String> regionList2 = new ArrayList<String>();  // 地域2
        List<String> countList = new LinkedList<String>();  // 統(tǒng)計次數(shù)
        List<String> avgList = new LinkedList<String>();  // 平均值
        // 封裝地域集合:(北京,數(shù)值和)
        Iterator<Map.Entry<String, Object>> it = regionMap.entrySet().iterator();
        while(it.hasNext()){
            Map.Entry<String, Object> entry = it.next();
            String key = entry.getKey();
            String value = String.valueOf(entry.getValue());
            regionList.add(key);
            numberList.add(value);
        }
        // 封裝統(tǒng)計次數(shù)集合:(北京,統(tǒng)計次數(shù))
        Iterator<Map.Entry<String, Object>> it2 = countMap.entrySet().iterator();
        while(it2.hasNext()){
            Map.Entry<String, Object> entry = it2.next();
            String key = entry.getKey();
            String value = String.valueOf(entry.getValue());
            regionList2.add(key);
            countList.add(value);
        }
        // 計算平均值:封裝集合avgList
        if(regionList.size() == numberList.size() && regionList2.size() == countList.size() && regionList.size() == regionList2.size()) {
        	for (int i = 0; i < regionList.size(); i++) {
        		String reg1 = regionList.get(i);
        		double fenzi = Double.parseDouble(numberList.get(i));
        		for (int j = 0; j < regionList2.size(); j++) {
        			String reg2 = regionList2.get(j);
        			if(reg1.equals(reg2)) {
        				int fenmu = Integer.valueOf(countList.get(j));
                		if(fenmu > 0) {
                			Double x =  fenzi/fenmu;
                			// double類型的數(shù)據(jù)當(dāng)分母的數(shù)值趨近0的時候,返回來的數(shù)值就是一個NAN:
                			if(Double.isNaN(x)){
                				x = 0.0;
                			}
                			avgList.add(String.valueOf(x));
                		}
        			}
				}
			}
        }
        // 最終輸出集合:
        List<Map<String,Object>> resultList = new ArrayList<>();
        // 根據(jù)地域集合與平均值集合封裝新集合resultList:
        if(regionList.size() == avgList.size()) {
            for (int i = 0; i < regionList.size(); i++) {
                Map<String,Object> map = new HashMap<>();
                map.put("title",regionList.get(i));
                map.put("value",avgList.get(i).substring(0,avgList.get(i).indexOf(".")+2));
                resultList.add(map);
            }
        }
        //排序:value值大的Map往前排,斌且插入新字段:sortValue,代表序列;
        Double[] valueSort = new Double[resultList.size()];
        String[] titleSort = new String[resultList.size()];
        // 排序后最終輸出集合:
        List<Map<String,Object>> listFinal= new ArrayList<>();
        // 獲取排序的數(shù)組:
        for (int i = 0; i < resultList.size(); i++) {
            valueSort[i] = Double.parseDouble(String.valueOf(resultList.get(i).get("value")));
            titleSort[i] = String.valueOf(resultList.get(i).get("title"));
        }
        // 數(shù)組排序:
        BubblSortUtils.bubbleSortDescMultipleDouble(valueSort,titleSort);
        // 數(shù)組封裝listFinal:
        for (int i = 0; i < valueSort.length; i++) {
            String ch = String.valueOf(titleSort[i]);
            for (int j = 0; j < resultList.size(); j++) {
                String value = String.valueOf(resultList.get(j).get("title"));
                if(ch.equals(value)){
                    listFinal.add(resultList.get(j));
                }
            }
        }
        // listFinal中添加排序字段:sortValue
        String[] A = new String[listFinal.size()];
        String[] B = new String[listFinal.size()];
        for (int i = 0; i < listFinal.size(); i++) {
            listFinal.get(i).put("sortValue",listFinal.size()-i);
            A[i] = String.valueOf(listFinal.get(i).get("title"));
            B[i] = String.valueOf(listFinal.get(i).get("value"));
        }
        Map<String,Object> restMap = new HashMap<>();
        restMap.put("title",A);
        restMap.put("value",B);
        return restMap;
	}
	

備注:以上代碼可簡化處理,寫這么多是為了明確每個過程,提供數(shù)據(jù)處理的拓展思路;
代碼修改位置
1.最終返回值由List Map改為數(shù)組返回:
2.修改接口返回值類型:由List Map修改為Map
最后返回值修改如下:

	// listFinal中添加排序字段:sortValue
    String[] A = new String[listFinal.size()];
    String[] B = new String[listFinal.size()];
    for (int i = 0; i < listFinal.size(); i++) {
        listFinal.get(i).put("sortValue",listFinal.size()-i);
        A[i] = String.valueOf(listFinal.get(i).get("title"));
        B[i] = String.valueOf(listFinal.get(i).get("value"));
    }
    Map<String,Object> restMap = new HashMap<>();
    restMap.put("title",A);
    restMap.put("value",B);
    return restMap;

Postman測試:
【Java 動態(tài)數(shù)據(jù)統(tǒng)計圖】前后端對接數(shù)據(jù)格式(Map返回數(shù)組格式數(shù)據(jù))六(120),java,java,開發(fā)語言
這樣前端就可以直接獲取使用了,返回的數(shù)組里面也是經(jīng)過排序處理的;文章來源地址http://www.zghlxwxcb.cn/news/detail-682032.html

到了這里,關(guān)于【Java 動態(tài)數(shù)據(jù)統(tǒng)計圖】前后端對接數(shù)據(jù)格式(Map返回數(shù)組格式數(shù)據(jù))六(120)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java項目-蒼穹外賣-Day11-Apache ECharts數(shù)據(jù)統(tǒng)計

    Java項目-蒼穹外賣-Day11-Apache ECharts數(shù)據(jù)統(tǒng)計

    主要是以下四項的統(tǒng)計,以不同形式的圖形進行展示 自己去網(wǎng)站上看一哈,我不太懂前端 com.sky.controller.admin.ReportController com.sky.service.impl.ReportServiceImpl.java orderMapper orderMapper.xml Reportcontroller ReportServiceImpl orderMapper.xml reportController ReportServiceImpl orderMapper.xml

    2024年02月09日
    瀏覽(27)
  • Java8用Stream流一行代碼實現(xiàn)數(shù)據(jù)分組統(tǒng)計,排序,最大值、最小值、平均值、總數(shù)、合計

    Java8用Stream流一行代碼實現(xiàn)數(shù)據(jù)分組統(tǒng)計,排序,最大值、最小值、平均值、總數(shù)、合計

    Java8對數(shù)據(jù)處理可謂十分流暢,既不改變數(shù)據(jù),又能對數(shù)據(jù)進行很好的處理,今天給大家演示下,用Java8的Stream如何對數(shù)據(jù)進行分組統(tǒng)計,排序,求和等 匯總統(tǒng)計方法 找到匯總統(tǒng)計的方法。這些方法屬于java 8的匯總統(tǒng)計類。 getAverage(): 它返回所有接受值的平均值。 getCount():

    2023年04月20日
    瀏覽(24)
  • 大數(shù)據(jù)(二)大數(shù)據(jù)行業(yè)相關(guān)統(tǒng)計數(shù)據(jù)

    大數(shù)據(jù)(二)大數(shù)據(jù)行業(yè)相關(guān)統(tǒng)計數(shù)據(jù)

    目錄 一、大數(shù)據(jù)相關(guān)的各種資訊 二、轉(zhuǎn)載自網(wǎng)絡(luò)的大數(shù)據(jù)統(tǒng)計數(shù)據(jù) 2.1、國家大數(shù)據(jù)政策 2.2、產(chǎn)業(yè)結(jié)構(gòu)分析 2.3、應(yīng)用結(jié)構(gòu)分析 2.4、數(shù)據(jù)中心 2.5、云計算 1. ? ?據(jù)IDC預(yù)測,到2025年全球 數(shù)據(jù)產(chǎn)生量將達到180ZB ,其中物聯(lián)網(wǎng)設(shè)備將占據(jù)很大一部分。 2. ? ?據(jù)Gartner預(yù)測,到2021年

    2024年02月10日
    瀏覽(21)
  • 【pandas基礎(chǔ)】--數(shù)據(jù)統(tǒng)計

    【pandas基礎(chǔ)】--數(shù)據(jù)統(tǒng)計

    在進行統(tǒng)計分析時, pandas 提供了多種工具來幫助我們理解數(shù)據(jù)。 pandas 提供了多個聚合函數(shù),其中包括均值、標(biāo)準(zhǔn)差、最大值、最小值等等。 此外, pandas 還可以進行基于列的統(tǒng)計分析,例如通過 groupby() 函數(shù)對數(shù)據(jù)進行聚合,并計算每組的統(tǒng)計分析結(jié)果。 除了基本的統(tǒng)計分

    2024年02月08日
    瀏覽(21)
  • 用Python做數(shù)據(jù)分析之?dāng)?shù)據(jù)統(tǒng)計

    接下來說說數(shù)據(jù)統(tǒng)計部分,這里主要介紹數(shù)據(jù)采樣,標(biāo)準(zhǔn)差,協(xié)方差和相關(guān)系數(shù)的使用方法。 1、數(shù)據(jù)采樣 Excel 的數(shù)據(jù)分析功能中提供了數(shù)據(jù)抽樣的功能,如下圖所示。Python 通過 sample 函數(shù)完成數(shù)據(jù)采樣。 2、數(shù)據(jù)抽樣 Sample 是進行數(shù)據(jù)采樣的函數(shù),設(shè)置 n 的數(shù)量就可以了。函

    2024年02月07日
    瀏覽(21)
  • 【SAS應(yīng)用統(tǒng)計分析】數(shù)據(jù)的描述性統(tǒng)計分析

    【SAS應(yīng)用統(tǒng)計分析】數(shù)據(jù)的描述性統(tǒng)計分析

    聲明:本文知識參考內(nèi)容來自網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系刪除。本文還參照了B站up主莊7的課程內(nèi)容【公開課】數(shù)據(jù)分析與SAS【15課】 目錄 實驗原理 描述性統(tǒng)計量 1.反映數(shù)據(jù)集中趨勢的特征量 2.反映數(shù)據(jù)離散程度的特征量 3.反映數(shù)據(jù)分布形狀的特征量 數(shù)據(jù)的圖形描述 直方圖 箱線

    2024年02月01日
    瀏覽(25)
  • 無涯教程-機器學(xué)習(xí) - 數(shù)據(jù)統(tǒng)計

    在進行機器學(xué)習(xí)項目時,通常無涯教程會忽略兩個最重要的部分,分別是 數(shù)學(xué) 和 數(shù)據(jù) 。這是因為知道ML是一種數(shù)據(jù)驅(qū)動的方法,并且ML模型只會產(chǎn)生與提供給它的數(shù)據(jù)一樣好的或壞的輸出。 在上一章中,討論了如何將CSV數(shù)據(jù)上傳到ML項目中,但是最好在上傳之前了解數(shù)據(jù)。

    2024年02月10日
    瀏覽(16)
  • 使用Flink完成流數(shù)據(jù)統(tǒng)計

    所有流計算統(tǒng)計的流程都是: 1、接入數(shù)據(jù)源 2、進行多次數(shù)據(jù)轉(zhuǎn)換操作(過濾、拆分、聚合計算等) 3、計算結(jié)果的存儲 其中數(shù)據(jù)源可以是多個、數(shù)據(jù)轉(zhuǎn)換的節(jié)點處理完數(shù)據(jù)可以發(fā)送到一個和多個下一個節(jié)點繼續(xù)處理數(shù)據(jù) Flink程序構(gòu)建的基本單元是stream和transformation(DataSet實質(zhì)

    2024年02月05日
    瀏覽(30)
  • 大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink 網(wǎng)站UV統(tǒng)計

    在實際應(yīng)用中,我們往往會關(guān)注,到底有多少不同的用戶訪問了網(wǎng)站,所以另外一個統(tǒng)計流量的重要指標(biāo)是網(wǎng)站的獨立訪客數(shù)(Unique Visitor,UV)。 對于UserBehavior數(shù)據(jù)源來說,我們直接可以根據(jù)userId來區(qū)分不同的用戶。 將userid放到SET集合里面,統(tǒng)計集合長度,便可以統(tǒng)計到網(wǎng)

    2024年02月11日
    瀏覽(26)
  • 【數(shù)據(jù)分析】統(tǒng)計量

    【數(shù)據(jù)分析】統(tǒng)計量

    1. 均值、眾數(shù)描述數(shù)據(jù)的集中趨勢度量,四分位差、極差描述數(shù)據(jù)的離散程度。 2. 標(biāo)準(zhǔn)差、四分位差、異眾比率度量離散程度,協(xié)方差是度量相關(guān)性。 ?期望值分別為E[X]與E[Y]的兩個實隨機變量X與Y之間的協(xié)方差Cov(X,Y)定義為: 從直觀上來看,協(xié)方差表示的是兩個變量總體誤

    2024年02月11日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包