返回信息流程序想测试某个函数的执行时间,这里用Thread.sleep(6000);替代。HashMap<String,Date[]>中Date[0]保存开始时间,Date[1]保存结束时间。可是在第一个for循环中读取到的HashMap<String,Date[]> ald是正常的,在第二个for循环中却只有最后一个value了,key都正常,见程序及结果。新手求指教~
直接上程序:
//统计function运行时间
System.out.println("时间测试start");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
HashMap<String,Date[]> ald = new HashMap<String,Date[]>();
Date[] date = new Date[2];
for(int i=0;i<5;i++){
date[0] = new Date();
Thread.sleep(6000);//function
date[1] = new Date();
ald.put(""+i, date);
//下面输出的时间正常
System.out.println(i+" start time:"+sdf.format(ald.get(i+"")[0]));
System.out.println(i+" end time:"+sdf.format(ald.get(i+"")[1]));
}
System.out.println("---------------------------------------");
//for(String key:ald.keySet()){
for(int i=0;i<5;i++){//这里读取的时间不正常
System.out.println(i+" start time:"+sdf.format(ald.get(i+"")[0]));
System.out.println(i+" end time:"+sdf.format(ald.get(i+"")[1]));
}
System.out.println("时间测试end");
执行结果:
时间测试start
0 start time:2015-12-25 15:11:32
0 end time:2015-12-25 15:11:38
1 start time:2015-12-25 15:11:38
1 end time:2015-12-25 15:11:44
2 start time:2015-12-25 15:11:44
2 end time:2015-12-25 15:11:50
3 start time:2015-12-25 15:11:50
3 end time:2015-12-25 15:11:56
4 start time:2015-12-25 15:11:56
4 end time:2015-12-25 15:12:02
---------------------------------------
0 start time:2015-12-25 15:11:56
0 end time:2015-12-25 15:12:02
1 start time:2015-12-25 15:11:56
1 end time:2015-12-25 15:12:02
2 start time:2015-12-25 15:11:56
2 end time:2015-12-25 15:12:02
3 start time:2015-12-25 15:11:56
3 end time:2015-12-25 15:12:02
4 start time:2015-12-25 15:11:56
4 end time:2015-12-25 15:12:02
时间测试end
这是一条镜像帖。来源:北邮人论坛 / java / #46596同步于 2015/12/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
问一个非常简单奇怪的java程序问题
SunnyRain
2015/12/25镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
引用问题:
你在line 5建立的Date[]数组一直就只有一个,是的,整个程序里,就只有一个Date[2]数组。
所以你在第一个循环里,不断的改变的,就是那么一个数组而已,最后map里虽然我5个key,但是这5个key都指向了同一个value,就是上面那个数组
3q~get了,原来是值传递的问题。。。
【 在 icyfox 的大作中提到: 】
: 引用问题:
: 你在line 5建立的Date[]数组一直就只有一个,是的,整个程序里,就只有一个Date[2]数组。
: 所以你在第一个循环里,不断的改变的,就是那么一个数组而已,最后map里虽然我5个key,但是这5个key都指向了同一个value,就是上面那个数组
这头像的图有些年头了。。大约在04年就在qq上见过,那时候家里刚接网
【 在 TonyFromDire ([大黄团][胀笨的托尼][团长已被我包养]) 的大作中提到: 】
: 哈哈,我是来看头像的,逗