浏览 12456 次
锁定老帖子 主题:性能最好的是数组吗?
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2003-11-21
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-11-21
性能应该是List和Set最好,Array用于特定的需要,例如需要对外提供一个Web Services的调用接口,那么就需要使用Array。
Array并没有表现出超过List/Set的性能,实际上由于JVM本身对Array的限制,使得Hibernate不能够对Array进行Proxy操作,因此就无法实现Proxy和Lazy loading,而实际上one-to-many绝大部分情况下都必须使用lazy loading,因此必须放弃Array使用的,又或者在底层使用List/Set,在外面用Array封装一下,这样就可以方便的提供Web Services访问接口。 总之,建议除非万不得以,否则不要使用Array。 |
|
返回顶楼 | |
发表时间:2003-11-30
单单效率而言,Bruce Eckel说,list 明显要比array差。-《thinking in java 2nd》chapter 9,Holding your object
因为list要为他的弹性付出的代价。 |
|
返回顶楼 | |
发表时间:2003-12-01
这个问题的讨论可能引起混淆,我来解释一下:
单就Java Collection来说(java.util.*) ,数组操作速度要明显超过集合操作,这一点没有任何疑问。 在Hibernate中,表达1:n的关系中,可以使用Set,Array,Bag,List等等,而这个时候的Set,Array,List不再是java.util.*中的HashSet, ArrayList了,并且由于在运行期,Hibernate会给POJO加上很多PO的操作方法,因此绝不能混淆这两者之间的关系。实际上Hibernate自己重新写了一套Collection的实现类,在 net.sf.hibernate.collection.*下 在Hibernate的1:n的关系中,使用List速度应该最快,其次是Set,而Bag要差一些,而Array是不建议采用的。由于List要多一个字段保存index,所以实际上Set使用更加广泛。总之我的习惯就是,如果1:n的关系中,子表有重复记录,那么就使用List,没有重复记录,就使用Set。 |
|
返回顶楼 | |
发表时间:2005-03-28
比如一个类的属性是这样的
int[][] p |
|
返回顶楼 | |
发表时间:2005-03-28
robbin 写道 这个问题的讨论可能引起混淆,我来解释一下:
新写了一套Collection的实现类,在 net.sf.hibernate.collection.*下 在Hibernate的1:n的关系中,使用List速度应该最快,其次是Set,而Bag要差一些,而Array是不建议采用的。由于List要多一个字段保存index,所以实际上Set使用更加广泛。总之我的习惯就是,如果1:n的关系中,子表有重复记录,那么就使用List,没有重复记录,就使用Set。 List会最快么?查询是最快吧,插入删除的时候,不会因为要多一次计算index的值而降低速度么?而且尤其是在通过cascade进行的情况下 |
|
返回顶楼 | |
发表时间:2005-03-28
引用 List会最快么?查询是最快吧,插入删除的时候,不会因为要多一次计算index的值而降低速度么?而且尤其是在通过cascade进行的情况下 他的意思是相对于Set 和 Bag 最快! Set不是还要保证存储的对象不能重复吗? Set的插入删除也比List慢啊 |
|
返回顶楼 | |
发表时间:2005-03-28
为什么List要多一个index呢?
我是因为要用签标显示数据,没有办法只好用list.因为List可以用数组方式显示.${command.list[1].property} |
|
返回顶楼 | |
发表时间:2006-08-08
Morgan0916 写道 引用 List会最快么?查询是最快吧,插入删除的时候,不会因为要多一次计算index的值而降低速度么?而且尤其是在通过cascade进行的情况下 他的意思是相对于Set 和 Bag 最快! Set不是还要保证存储的对象不能重复吗? Set的插入删除也比List慢啊 不是吧,Set不需要 index啊,所以插入删除的效率肯定比 List快多了 |
|
返回顶楼 | |
发表时间:2006-08-08
lyo 写道 Morgan0916 写道 引用 List会最快么?查询是最快吧,插入删除的时候,不会因为要多一次计算index的值而降低速度么?而且尤其是在通过cascade进行的情况下 他的意思是相对于Set 和 Bag 最快! Set不是还要保证存储的对象不能重复吗? Set的插入删除也比List慢啊 不是吧,Set不需要 index啊,所以插入删除的效率肯定比 List快多了 因为没有index 反而慢啊,要比较多次。 |
|
返回顶楼 | |