模拟java 数据处理

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;


/**
 * 
 * 
 * 模拟1一万只表 ,計算 cost times:83 ms 秒0 s
 * 模拟10万只表 ,計算 cost times:397 ms 秒0 s
 * 机器双核,4G内存测试
 * Intel(R) 6 Series/C200 Series Chipset Family 4 port Serial ATA Storage Controller - 1C00
 * @author Administrator
 *
 */
public class Test {

 
  static Random r = new Random();
  static Map<String,List<Meter>> map = new HashMap<String,List<Meter>>();
static{
int temp=0,temp2 ;

int a =0;
while(a<1000){  
List<Meter> aList = new ArrayList<Meter>();
for(int i=1,j=i+1;i<10;j++,i++){
Date dat = null;
Calendar cd = Calendar.getInstance();
       cd.add(Calendar.DATE, i);
       dat = cd.getTime();
       
       if(i==1){
        temp = i+r.nextInt(10);
       }else{
        temp += i+r.nextInt(10);
       }
       aList.add(new Meter("meter"+a,dat,temp));
       
}
map.put("meter"+a, aList);
a++;

}


}


//yyyy-MM-dd HH:mm:ss

static SimpleDateFormat dformat = new SimpleDateFormat("yyyy-MM-dd");
 
public static void main(String[] args) {
long bg = System.currentTimeMillis();
System.out.println("开始計算。。。。");
Map<String,List<Meter>> map2 = new HashMap<String,List<Meter>>();
String tempMeterNo = null;
   for(Map.Entry<String,List<Meter>> m:map.entrySet()){
            System.out.print(" ");
            
        List<Meter> cList = new ArrayList<Meter>(); 
            for(int i=0;i<m.getValue().size();i++){
            tempMeterNo = m.getKey();
           
            Meter m1 = m.getValue().get(i);

//System.out.println(m1.getMeterNo()+"-"+dformat.format(m1.getDay())+"-"+m1.getVal());
if(i<m.getValue().size()-1){
Meter m2 = m.getValue().get(i+1);
int v = m2.getVal()-m1.getVal();
//計算差值
Meter m3 = new Meter(m1.getMeterNo(),m1.getDay(),v);
cList.add(m3);
}


}
            map2.put(tempMeterNo, cList);

}
System.out.println("=======結束計算============");

long ed = System.currentTimeMillis();
System.out.println("計算 cost times:"+(ed-bg)+" ms 秒"+(ed-bg)/1000+" s");
//打印输出结果

/* long b2 = System.currentTimeMillis();
for(Map.Entry<String,List<Meter>> m:map2.entrySet()){
          // System.out.print("  結果 ");
           
        List<Meter> cList = new ArrayList<Meter>(); 
           for(int i=0;i<m.getValue().size();i++){
            tempMeterNo = m.getKey();
           
            Meter m1 = m.getValue().get(i);


//System.out.println(m1.getMeterNo()+"-"+dformat.format(m1.getDay())+"-"+m1.getVal());
           }
       }
   long e2= System.currentTimeMillis();
   System.out.println("打印 cost times:"+(ed-bg)+" ms");*/


}


public static Date getdate(int i)
    {
        Date dat = null;
        Calendar cd = Calendar.getInstance();
        cd.add(Calendar.DATE, i);
        dat = cd.getTime();
        SimpleDateFormat dformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Timestamp date = Timestamp.valueOf(dformat.format(dat));
        return date;
    }


}


class Meter {

public String meterNo;
public Date day;
public int val;


public Meter(String meterNo, Date day, int val) {
super();
this.meterNo = meterNo;
this.day = day;
this.val = val;
}
public String getMeterNo() {
return meterNo;
}
public void setMeterNo(String meterNo) {
this.meterNo = meterNo;
}
public Date getDay() {
return day;
}
public void setDay(Date day) {
this.day = day;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jmockdata(再也不用苦逼的造测试数据了) Jmockdta是一款实现模拟JAVA类型或对象的实例化并随机初始化对象的数据的工具框架。单元测试的利器。     The plug-in of Jmockdata what through random algorithm mock java data.   Jmockdata插件通过随机算法模拟Java数据.   版本信息 Jmockdata-2.0 发布时间 2017-02-03 Jmockdata-1.0 发布时间 2017-01-04 具体介绍和用法可以参考如下:   0. 模拟数据入口方法 JMockData.mock(JmockDataWrapper) 1. 被模拟数据必须继承JmockDataWrapper经过它的包装 2. 被模拟数据最好是plain bean,只提供getter,setter,has,is方法的才可以被模拟 3. 框架默认实现了40个元数据类型的数据模拟器包括:   byte.class,Byte.class,byte[].class,Byte[].class, short.class,Short.class,short[].class,Short[].class, int.class,Integer.class,int[].class,Integer[].class, long.class,Long.class,long[].class,Long[].class, float.class,Float.class,float[].class,Float[].class, double.class,Double.class,double[].class,Double[].class, boolean.class,Boolean.class,boolean[].class,Boolean[].class, char.class,Character.class,char[].class,Character[].class, String.class,String[].class, BigDecimal.class,BigDecimal[].class, BigInteger.class,BigInteger[].class, Date.class,Date[].class 通过对以上基本元数据类型的模拟实现,本框架可以轻松模拟由以上元数据结构组成的BEAN、LIST、SET、ARRAY等复杂深度的数据结构的数据模拟。   4. 可以通过JmockDataContext 获取模拟过程的所有上下文信息,甚至可以打印整个模拟类型树   5. 可以通过JMockDataManager 注册模拟数据类型,重写模拟数据算法,注册模拟数据类拦截器等 6. 可以通过实现MockData来实现一个模拟数据类型 7. 可以通过实现JmockDataTemplate,或者继承JmockDataTemplateDefault来重写模拟数据算法 8. 可以通过实现JmockDataInterceptor来实现一个拦截器 9. 具体示例实践请参考https://github.com/jsonzou/jmockdata-demo 10. 有问题或者对本框架有新的想法,请联系我, 作者:jsonzou 标签:Jmockdata
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值