从一个Size为10000的List里面把数据复制到一个Length为10000的Object数组并强制转换竟然毫无费时!!!

liverpoolfc 2005-10-28 05:02:38
代码片断如下:

public AbstractOcsInfoClassinfo[] findClassInfo() {
List list = new ArrayList();
AbstractOcsInfoClassinfo[] classInfoList = null;

String sql = "from OcsInfoClassinfo classinfo where rownum<=10000";// where classid like '1%' or classid like '2%' or classid like '3%' or classid like '%4' or classid like '%5' or classid like '%6' or classid like '%7' or classid like '%8'";

//返回全部信息列表
long beginTime = System.currentTimeMillis();
list = getHibernateTemplate().find(sql);
long endTime = System.currentTimeMillis();
System.out.println("===================>>>Fetching from DB Time:" + (endTime - beginTime));
beginTime = System.currentTimeMillis();
classInfoList = new AbstractOcsInfoClassinfo[list.size()];
Object tempObj[] = list.toArray();
for (int i = 0; i < tempObj.length; i++) {
classInfoList[i] = (AbstractOcsInfoClassinfo) tempObj[i];
}
endTime = System.currentTimeMillis();
System.out.println("===================>>>Filling AbstractInfoClassinfo Array Time:" + (endTime - beginTime));
return classInfoList;

}

结果显示:

===================>>>Fetching from DB Time:12203
===================>>>Filling AbstractInfoClassinfo Array Time:0


我真的不很明白,不是说Java创建对象的开销很大吗?这里创建一个Object[10000],然后把List数据填进去,然后在强制把Object转换为另一种类。这里计算的耗时竟然是0毫秒?

不可能吧?真的很奇怪,我的测试代码是否有问题?
...全文
156 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
pauliuyou 2005-10-28
  • 打赏
  • 举报
回复
只是一个地址的复制而已
bobshi 2005-10-28
  • 打赏
  • 举报
回复
这里并不没有进行对象的复制吧,

只是把这一个对象引用给另一个对象。

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧