地域统计 测试

简介: 地域统计 测试       package com.sq.test; import org.json.JSONArray; import org.json.JSONObject; import com.

地域统计 测试

 

 

 

package com.sq.test;
import org.json.JSONArray;
import org.json.JSONObject;

import com.sq.utilities.Constants;
import com.sq.utilities.JSONArrayProcessHelper;

/**
 * <pre>
 *----the day before yesterday-----------------------------
 * 北京 1 123
 * 上海 3 101 
 *----yesterday----------------------------
 * 北京 5 ?
 * 无锡 1 ?
 * 常州 3 ?
 *----statics yesterday----------------------------
 *北京 5 128
 *上海 0 101
 *无锡 1 1
 *常州 3 3
 * </pre>
 * @author baoy
 *
 */
public class UserAreaJsonTest {

   final static String DATA_STRING = "data";
   final static String ALL_USER_COUNT = "all_user_count";
   final static String NEW_USER_COUNT = "new_user_count";
   final static String USER_AREA_CITY = "user_area_city";
	
   public static void main(String[] args) throws Exception {
	   JSONObject yesterday = yesterday();
	   JSONObject newuser = newuser();
	   
		JSONArray yesterdayJsonArray= yesterday.getJSONArray(DATA_STRING);
		JSONArray   todaydayJsonArray = newuser.getJSONArray(DATA_STRING);
		
		JSONObject resultJson = new JSONObject();
		JSONArray jsonArray = new JSONArray();
		getAllSet(yesterdayJsonArray, todaydayJsonArray);
		System.out.println("-----------------------------");
		printLog(yesterdayJsonArray);
		getJSONArray(jsonArray, yesterdayJsonArray, todaydayJsonArray);
		JSONArray jsonArray2 = JSONArrayProcessHelper.sortJSONArray(jsonArray,ALL_USER_COUNT );
		resultJson.put(DATA_STRING, jsonArray2);
		System.out.println("-----------------------------");
		printLog(resultJson);
   }
   
   private static  void   getJSONArray (JSONArray jsonArray, JSONArray yesterdayJsonArray,JSONArray todaydayJsonArray) throws Exception {
	   for (int i = 0; i < yesterdayJsonArray.length(); i++) {
		   JSONObject jObj = yesterdayJsonArray.getJSONObject(i);
			boolean isSelected = false;
		   for (int j = 0; j < todaydayJsonArray.length(); j++) {
			if ( !isSelected  &&  todaydayJsonArray.getJSONObject(j).getString(USER_AREA_CITY) .equals(jObj.getString(USER_AREA_CITY)) ) {
				JSONObject oneObject = new JSONObject();
				oneObject.put(NEW_USER_COUNT ,  todaydayJsonArray.getJSONObject(j).getLong(NEW_USER_COUNT) );
				oneObject.put(USER_AREA_CITY, todaydayJsonArray.getJSONObject(j).getString(USER_AREA_CITY)); 
				oneObject.put(ALL_USER_COUNT, todaydayJsonArray.getJSONObject(j).getLong(NEW_USER_COUNT) + jObj.getLong(ALL_USER_COUNT) );
				jsonArray.put(oneObject);
				isSelected = true;
			}
		   }
		if (isSelected== false) {
			JSONObject oneObject = new JSONObject();
			oneObject.put(NEW_USER_COUNT ,  0 );
			oneObject.put(USER_AREA_CITY, jObj.getString(USER_AREA_CITY)); 
			oneObject.put(ALL_USER_COUNT,jObj.getLong(ALL_USER_COUNT) );
			jsonArray.put(oneObject);
			isSelected = true;
		}
		 
	   }
   }
   
   
   
   
   private static  void  getAllSet(JSONArray yesterdayJsonArray,JSONArray todaydayJsonArray) throws Exception{
	   for (int i = 0; i < todaydayJsonArray.length(); i++) {
		   JSONObject  Jobj= todaydayJsonArray.getJSONObject(i);
		   boolean isSelected = false;
		   for ( int j = 0; j < yesterdayJsonArray.length(); j++) {
			 if(!isSelected && yesterdayJsonArray.getJSONObject(j).getString(USER_AREA_CITY).equals(Jobj.getString(USER_AREA_CITY))) {
				 isSelected = true;
			 }else if (!isSelected &&  j==yesterdayJsonArray.length()-1 ) {
				 isSelected = true;
				 JSONObject oneObject = new JSONObject();
				 oneObject.put(NEW_USER_COUNT ,  0);
				 oneObject.put(USER_AREA_CITY, Jobj.getString(USER_AREA_CITY)); 
				 oneObject.put(ALL_USER_COUNT, 0);
				 yesterdayJsonArray.put(oneObject);
			 }
		   }
		   if (isSelected ==false) {
			   	 isSelected = true;
				 JSONObject oneObject = new JSONObject();
				 oneObject.put(NEW_USER_COUNT ,  0);
				 oneObject.put(USER_AREA_CITY, Jobj.getString(USER_AREA_CITY)); 
				 oneObject.put(ALL_USER_COUNT, 0);
				 yesterdayJsonArray.put(oneObject);
		   }
	   }
   }
   
   
   private static  void   printLog (JSONArray jsonArray) throws Exception{
	   for (int i = 0; i < jsonArray.length(); i++) {
		   JSONObject jObj = jsonArray.getJSONObject(i);
		System.out.println(
				jObj.getString(USER_AREA_CITY)+" "+
				jObj.getLong(NEW_USER_COUNT)+" "+
				jObj.getLong(ALL_USER_COUNT)		);
	   }
   }
   
   private static  void   printLog (JSONObject resultJson) throws Exception{
	   JSONArray yesterdayJsonArray = resultJson.getJSONArray(DATA_STRING);
	   printLog(yesterdayJsonArray);
   }
   
   
   
   
   private static  JSONObject yesterday(){
		JSONObject resultJson = new JSONObject();
		JSONArray jsonArray = new JSONArray();
		try 
		{
			resultJson.put(DATA_STRING, jsonArray);
			 
			JSONObject oneObject = new JSONObject();
			oneObject.put(NEW_USER_COUNT ,  1);
			oneObject.put(USER_AREA_CITY, "北京"); 
			oneObject.put(ALL_USER_COUNT, 123);
			jsonArray.put(oneObject);
			
			JSONObject twoObject = new JSONObject();
			twoObject.put(NEW_USER_COUNT ,  3);
			twoObject.put(USER_AREA_CITY, "上海"); 
			twoObject.put(ALL_USER_COUNT, 101);
			jsonArray.put(twoObject); 
			
			return resultJson;
	     }catch (Exception e){
	    	 return resultJson; 
	     }
		
	 }
   
   
	private static JSONObject newuser(){
		JSONObject resultJson = new JSONObject();
		JSONArray jsonArray = new JSONArray();
		try 
		{
			resultJson.put(DATA_STRING, jsonArray);
			 
			JSONObject oneObject = new JSONObject();
			oneObject.put(NEW_USER_COUNT ,  1);
			oneObject.put(USER_AREA_CITY, "无锡"); 
			jsonArray.put(oneObject);
			
			JSONObject twoObject = new JSONObject();
			twoObject.put(NEW_USER_COUNT ,  3);
			twoObject.put(USER_AREA_CITY, "常州"); 
			jsonArray.put(twoObject);
			
			JSONObject threeObject = new JSONObject();
			threeObject.put(NEW_USER_COUNT ,  5);
			threeObject.put(USER_AREA_CITY, "北京"); 
			jsonArray.put(threeObject);  
			
			
			return resultJson;
	     }catch (Exception e){
	    	 return resultJson; 
	     }
		
	 }
}

 

json 排序

package com.sq.utilities;


import org.apache.log4j.Logger;
import org.json.JSONArray;
import org.json.JSONObject;

public class JSONArrayProcessHelper {
	private static Logger log = Logger.getLogger(JSONArrayProcessHelper.class);

	/**
	 * @param data 需要进行排序的数据
	 * @param tag 对数据的哪个维度进行排序
	 * @param index 输出的排序结果的最长长度,-1表示全部
	 * @return
	 */
	public static JSONArray sortJSONArray(JSONArray data, String tag) {

		if (data == null || tag == null) {
			log.error("Sort JSONArray param is null ");
			return null;
		}

		JSONArray dataArray = data;
		try {
			log.info("begin sort data length is : " + data.length());
			for (int i = 0; i < dataArray.length(); i++) {
				JSONObject teI = dataArray.getJSONObject(i);
				long valueI = teI.getLong(tag);
				for (int j = i; j < dataArray.length(); j++) {
					JSONObject teJ = dataArray.getJSONObject(j);
					long valueJ = teJ.getLong(tag);
					if (valueJ > valueI) {
						// swap
						JSONObject temp = new JSONObject();
						temp = dataArray.getJSONObject(i);
						dataArray.put(i, dataArray.get(j));
						dataArray.put(j, temp);
						valueI = valueJ; // !!
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		return dataArray;
	}

	 
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

目录
相关文章
|
5月前
|
存储 测试技术
统计测试结果的代码实现接昨天
统计测试结果的代码实现接昨天
|
5月前
|
存储 算法 异构计算
基于FPGA的图像直方图统计实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像直方图统计实现,包括tb测试文件和MATLAB辅助验证
|
5月前
|
Java
100143. 统计已测试设备 --力扣 --JAVA
给你一个长度为 n 、下标从 0 开始的整数数组 batteryPercentages ,表示 n 个设备的电池百分比。 你的任务是按照顺序测试每个设备 i,执行以下测试操作: 如果 batteryPercentages[i] 大于 0: 增加 已测试设备的计数。 将下标在 [i + 1, n - 1] 的所有设备的电池百分比减少 1,确保它们的电池百分比 不会低于 0 ,即 batteryPercentages[j] = max(0, batteryPercentages[j] - 1)。 移动到下一个设备。 否则,移动到下一个设备而不执行任何测试。 返回一个整数,表示按顺序执行测试操作
45 0
|
NoSQL Redis 数据中心
Redis 集群偶数节点跨地域部署之高可用测试
你搭建过偶数节点的 Redis 集群吗?有没有想过它是否具备高可用的能力?会不会脑裂呢?实践出真知!现在 docker 太方便了,搭一个集群模拟一下……
160 4
|
测试技术 BI
测试思想-测试总结 缺陷分析与统计浅析
测试思想-测试总结 缺陷分析与统计浅析
136 0
|
测试技术 BI
测试思想-测试总结 测试报告-关于关缺陷统计
测试思想-测试总结 测试报告-关于关缺陷统计
102 0
|
弹性计算 负载均衡 容灾
阿里云服务器地域和可用区怎么选择?地域节点测试IP地址
阿里云服务器地域是什么?阿里云可用区是什么?阿里云服务器地域和可用区如何选择?
876 0
阿里云服务器地域和可用区怎么选择?地域节点测试IP地址
|
算法
使用贝叶斯统计来进行更好更直观的A/B测试
使用贝叶斯统计来进行更好更直观的A/B测试
232 0
使用贝叶斯统计来进行更好更直观的A/B测试
|
搜索推荐 测试技术 UED
Netflix 是如何做决策的? | 4. A/B 测试结果之假阴性和统计功效
Netflix 是如何做决策的? | 4. A/B 测试结果之假阴性和统计功效
131 0
Netflix 是如何做决策的? | 4. A/B 测试结果之假阴性和统计功效
下一篇
无影云桌面