论坛首页 Java企业应用论坛

性能最好的是数组吗?

浏览 12455 次
该帖已经被评为精华帖
作者 正文
   发表时间:2003-11-21  
还是Set,List.........
   发表时间: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。
0 请登录后投票
   发表时间:2003-11-30  
单单效率而言,Bruce Eckel说,list 明显要比array差。-《thinking in java 2nd》chapter 9,Holding your object

因为list要为他的弹性付出的代价。
0 请登录后投票
   发表时间: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。
0 请登录后投票
   发表时间:2005-03-28  
比如一个类的属性是这样的
int[][] p
0 请登录后投票
   发表时间: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进行的情况下
0 请登录后投票
   发表时间:2005-03-28  
引用

List会最快么?查询是最快吧,插入删除的时候,不会因为要多一次计算index的值而降低速度么?而且尤其是在通过cascade进行的情况下


他的意思是相对于Set 和 Bag 最快!

Set不是还要保证存储的对象不能重复吗?  Set的插入删除也比List慢啊
0 请登录后投票
   发表时间:2005-03-28  
为什么List要多一个index呢?

我是因为要用签标显示数据,没有办法只好用list.因为List可以用数组方式显示.${command.list[1].property}
0 请登录后投票
   发表时间:2006-08-08  
Morgan0916 写道
引用

List会最快么?查询是最快吧,插入删除的时候,不会因为要多一次计算index的值而降低速度么?而且尤其是在通过cascade进行的情况下


他的意思是相对于Set 和 Bag 最快!

Set不是还要保证存储的对象不能重复吗?  Set的插入删除也比List慢啊


不是吧,Set不需要 index啊,所以插入删除的效率肯定比 List快多了 
0 请登录后投票
   发表时间:2006-08-08  
lyo 写道
Morgan0916 写道
引用

List会最快么?查询是最快吧,插入删除的时候,不会因为要多一次计算index的值而降低速度么?而且尤其是在通过cascade进行的情况下


他的意思是相对于Set 和 Bag 最快!

Set不是还要保证存储的对象不能重复吗?  Set的插入删除也比List慢啊


不是吧,Set不需要 index啊,所以插入删除的效率肯定比 List快多了 

因为没有index 反而慢啊,要比较多次。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics