社区
Java SE
帖子详情
如下情况,怎么写代码的效率更高?
thinke365
2008-08-26 09:28:14
定义为:
Collection<E> c;
Iterator<E> iter = c.iterator();
现在要求对c中的元素进行遍历,下面两种,哪种效率更高?为什么?
1
while(iter.hasNext()) {
E temp = iter.next();
// some operations
}
2
E temp;
while(iter.hasNext()) {
temp = iter.next();
// some operations
}
...全文
258
33
打赏
收藏
如下情况,怎么写代码的效率更高?
定义为: Collection c; Iterator iter = c.iterator(); 现在要求对c中的元素进行遍历,下面两种,哪种效率更高?为什么? 1 while(iter.hasNext()) { E temp = iter.next(); // some operations } 2 E temp; while(iter.hasNext()) { temp = iter.next(); // some operations }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
33 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vamvin_55
2008-08-28
打赏
举报
回复
纯效率来说的话
下面的那个好点...
lawincy
2008-08-28
打赏
举报
回复
这种代码有比较意义没?还谈什么效率呀,第二个顶多在函数里多了4个字节的引用,第一个只是在for里面每次增加4个字节的引用(在没被GC之前)。要论效率,肯定是第二个要高点点,但是没意义,并且对栈的操作次数是一样的。
syzhwh
2008-08-27
打赏
举报
回复
第一个好,编程少写了temp;这几个字符:)
zhj92lxs
2008-08-27
打赏
举报
回复
[Quote=引用 6 楼 bao110908 的回复:]
我认为下面这种方式更好,同时限制了迭代器的局部变量作用域。
Java codefor(Iterator<E>i=c.iterator(); i.hasNext(); ) {
E temp=i.next();
}
[/Quote]
支持
dln1234
2008-08-27
打赏
举报
回复
其实差别都不大,看个人喜欢了。萝卜咸菜各有所爱
fengyuleidian3
2008-08-27
打赏
举报
回复
[Quote=引用 28 楼 lisl2003 的回复:]
引用 26 楼 hunterzhang0812 的回复:
给你们再做个测试,看看会得到什么结果
List l = new ArrayList();
POJO p;
for (int i=0; i <10; i++) {
p = new POJO;
l.add(p);
}
for (int i=0; i <10; i++) {
POJO p = new POJO;
l.add(p);
}
看看得到的这两个LIST内容有什么区别没有...
汗,这个例子举的……
[/Quote]
呵呵!
mengweilil
2008-08-27
打赏
举报
回复
我不知道pojo是啥。。。。。只好用Integer代替了,打出来是一样的东西
lisl2003
2008-08-27
打赏
举报
回复
[Quote=引用 26 楼 hunterzhang0812 的回复:]
给你们再做个测试,看看会得到什么结果
List l = new ArrayList();
POJO p;
for (int i=0; i <10; i++) {
p = new POJO;
l.add(p);
}
for (int i=0; i <10; i++) {
POJO p = new POJO;
l.add(p);
}
看看得到的这两个LIST内容有什么区别没有...
[/Quote]
汗,这个例子举的……
cwjieNo1
2008-08-27
打赏
举报
回复
我喜欢后一个·~
mengweilil
2008-08-27
打赏
举报
回复
ls的,pojo是啥东西?
wolfgang_l
2008-08-27
打赏
举报
回复
[Quote=引用 3 楼 hqbobo 的回复:]
后一个吧
少了一个定义..
[/Quote]
sxn19811006
2008-08-27
打赏
举报
回复
1
ZangXT
2008-08-27
打赏
举报
回复
[Quote=引用 16 楼 lgg201 的回复:]
不知道这个和基础数据类型复杂数据类型有没有关系?
比如E是一个自定义类型呢?
类型复杂度的提高+海量数据不知道哪个更优,没有环境,提出来大家看看.
[/Quote]
不会差别很大,因为E temp;语句不涉及到创建对象.具体操作都在循环里了
goosman
2008-08-27
打赏
举报
回复
不知道这个和基础数据类型复杂数据类型有没有关系?
比如E是一个自定义类型呢?
类型复杂度的提高+海量数据不知道哪个更优,没有环境,提出来大家看看.
haoxiongok
2008-08-27
打赏
举报
回复
[Quote=引用 6 楼 bao110908 的回复:]
我认为下面这种方式更好,同时限制了迭代器的局部变量作用域。
Java codefor(Iterator<E> i = c.iterator(); i.hasNext(); ) {
E temp = i.next();
}
[/Quote]
ZangXT
2008-08-27
打赏
举报
回复
[Quote=引用 2 楼 ZangXT 的回复:]
1的栈操作应该多一些,但不会带来很大的性能损失。
不过2的好处是让temp的作用域限制在循环之内,如果循环后用不到temp了,我会选择2这样的写法。
[/Quote]
晕,正好写反了,丢人了.一般都使用1.
hunterzhang0812
2008-08-27
打赏
举报
回复
给你们再做个测试,看看会得到什么结果
List l = new ArrayList();
POJO p;
for (int i=0; i<10; i++) {
p = new POJO;
l.add(p);
}
for (int i=0; i<10; i++) {
POJO p = new POJO;
l.add(p);
}
看看得到的这两个LIST内容有什么区别没有...
火龙果被占用了
2008-08-27
打赏
举报
回复
当然有差别了,写在里面在执行完成后,能加速对象的垃圾回收,
而写在外面由于局部变量作用范围关系,得在完全退出这个方法
时才会被回收掉。
如果代码很短的话基本上是没区别的,但是如何代码比较长,而
且计算比较复杂的话,我认为应该选用 2,毕竟写代码的原则应
该把局部变量的作用范围限制在尽可能小的范围内。
guoxyj
2008-08-27
打赏
举报
回复
差不多
liang8305
2008-08-27
打赏
举报
回复
完全没有必要抠到这么细
不过我喜欢1,因为temp每次都是新的
加载更多回复(12)
简洁
代码
一定比复杂
代码
效率
高吗?
简洁
代码
一定比复杂
代码
效率
高吗?
一文带你彻底搞懂i++和++i的区别,谁的
效率
更高
?
作者简介:Codebowl靓仔,学妹的工具人,C++开发误入数据开发,梦想30岁退休的靓仔就是我啦。 i++和++i对于初学者来说,一直是一个特别容易搞混的内容,相信很多人现在也没有完全搞清(作者初学的时候就一直稀里糊涂的,老师在讲这个的时候也一笔带过了)。 不过今天不用怕,看完这篇文章,相信你一定能搞清楚这俩个的区别! 一文带你彻底搞懂i++和++i的区别,谁的
效率
更高
?基本概念++i和i++的区别i++和++i的原理单独使用时参与运算时i++和++i那个
效率
更高
? 基本概念 两者的作用都是自增加1。.
for和foreach那个
效率
更高
?原因是什么?
写
这篇文章的原因主要是在开发过程中突然有以下几个疑问,特抽出时间深度探究一下,以加深自身对php的理解。 1、作为一名phper,for和foreach循环遍历几乎每天都在使用,那么这两种遍历方式哪一种
效率
更高
呢? 2、
效率
高的原因是什么呢? 3、原理分别是什么呢?
Spring AOP中的JDK和CGLib动态代理哪个
效率
更高
?
一、背景 今天有小伙伴面试的时候被问到:Spring AOP中JDK 和 CGLib动态代理哪个
效率
更高
? 二、基本概念 首先,我们知道Spring AOP的底层实现有两种方式:一种是JDK动态代理,另一种是CGLib的方式。 自Java 1.3以后,Java提供了动态代理技术,允许开发者在运行期创建接口的代理实例,后来这项技术被用到了Spring的很多地方。 JDK动态代理主要涉及...
MySQL select * 和把所有的字段都列出来,哪个
效率
更高
?
MySQL select * 和把所有的字段都列出来,哪个
效率
更高
? 关注者 29 被浏览 7486 关注问题
写
回答 添加评论 分享 邀请回答 举报
Java SE
62,612
社区成员
307,332
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章