讨论关于Vector与ArrayList ArrayList是Vector的升级版本,推荐使用Vector是为了向前兼容另外你的设计模式噢有兴趣,和合[email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ArrayList不提供同步功能﹐在不需要同步時比Vector快。 ArrayList是非同步的,而Vector是同步的。这种差别主要体现在多个线程对同一个实例操作的时候,ArrayList有可能出现意外的非同步存取。事实上,除了这点区别,两个几乎是一样的了,Vector的方法比较多,但ArrayList的也够用了。大部分时候,我们都选择的是Vector,这个出现的早嘛。不是吗?^_^ 这位大哥同步的概念我不是特别明白,能否深入浅出的解释一下Vector的同步是什么,谢谢 细细,kinglomei讲的让我一下茅塞顿开,那么就是说多线程的时候只能以线程独占的方式存取同一个Vector,是这样么? Vector好象是jdk1.1里面的容器吧,具体可以参考一下《think in java》第2版,对你的书很感兴趣,能否给一份我,[email protected],谢谢! 是这样的啊,要不然你改我也改,最后同一个实例都被改的不成样子了。关于ArrayList出现的原因,我想是为了在没有多线程修改实例的前提下,用ArrayList比较快吧。都说用Vector比较慢。 那么在排序的时候,存在Vector里的数据对象类也是一定要继承comparable接口的了 排序,为什么要对Vector排序呢? 你到底是对数组进行操作呢,还是对Vector进行操作呢。如果想写二分法的算法,那就用数组来存放对象得了。如果想找到特定的对象,那就直接get(i)不就得了? 是不是中译版《开发模式》太烂了,^_^去看看《Java2 核心技术》卷II,中有解释 没什么好讨论的,这个问题翻来覆去和HashTable vs Hashmap被讨论了n次了。你就这么记住吧,就当sun公司从来就没写过Vector和HashTable两个类。事实上,Sun公司也很后悔当时写了Vector和HashTable. 朋友翻译的,不太好,呵呵**********向量和数组列表(Vector vs. ArrayList)类java.util.Vector被用作表示对象引用的列表,它支持动态的扩充vector,随机地存取vector元素等等。一个更新的方案是Java collection框架,它包含一个ArrayList类,这个类可以被用来替代Vector。Vector和ArrayList的性能差异包括:。Vector的方法是同步的,而ArrayList的不是。这意味着Vector是线程安全的,因此会需要一些额外的成本(§3.3)。。collection框架为ArrayList提供了一个可选的办法叫做LinkedList,它提供不同的性能交易(which offers different performance tradeoffs (§6.4))。。当Vector需要增加它的内部数据结构来保留更多的元素时,数据结构的大小会加倍,而ArrayList的大小只增加50%。因此在空间使用方面,ArrayList更节省一些。 如果有可能,在应用中使用collection框架是值得的,因为它是处理集合的标准方式。假设你关心线程安全问题,处理这个问题的一种方式是类似ArrayList的封装对象,例如: List list = Collections.synchronizedList(new ArrayList()); 这个技巧使得list成为线程安全的。 那,您看Cllections.sort(Vector obj)这样的调用能否实现。顺便问一句,我用ArrayList.get(i).name (name为数据对象属性值)不能成功,除非改为object o=(object)ArrayList.get(i);o.name这种形式才行,我没有看出这两种方式质的不同,您觉得了? 呵呵,我来总结一下发言: hayai(生命树)的回答是最幽默的; geyf(其实我也不会)是最完全的; kinglomei(可乐猫) 是最耐心和仔细的;其它列位是最让人感动的。谨此向诸位给予的帮助表示感谢。^Z^ java构造器 如何获取一个基类的多个继承类中的最外层继承类? JTable查询结果叠加的问题 问一个概念问题 关于Java分割字符串 String a = null;和String a=“”哪种好? 我的单选框可以多选怎么办 对一个画图小程序的疑惑,求救 一个字符集的问题 四个小角,呵呵,庆祝csdn的的j2ee版块,请斑竹不要删呀! 求解HashTable、HashMap、Vector、ArrayList之间的区别! sqlserver的jdbc安装在tomcat中的问题
事实上,除了这点区别,两个几乎是一样的了,Vector的方法比较多,但ArrayList的也够用了。
大部分时候,我们都选择的是Vector,这个出现的早嘛。
不是吗?^_^
都说用Vector比较慢。
如果想写二分法的算法,那就用数组来存放对象得了。
如果想找到特定的对象,那就直接get(i)不就得了?
去看看《Java2 核心技术》卷II,中有解释
**********
向量和数组列表(Vector vs. ArrayList)
类java.util.Vector被用作表示对象引用的列表,它支持动态的扩充vector,随机地存取vector元素等等。
一个更新的方案是Java collection框架,它包含一个ArrayList类,这个类可以被用来替代Vector。Vector和ArrayList的性能差异包括:
。Vector的方法是同步的,而ArrayList的不是。这意味着Vector是线程安全的,因此会需要一些额外的成本(§3.3)。
。collection框架为ArrayList提供了一个可选的办法叫做LinkedList,它提供不同的性能交易(which offers different performance tradeoffs (§6.4))。
。当Vector需要增加它的内部数据结构来保留更多的元素时,数据结构的大小会加倍,而ArrayList的大小只增加50%。因此在空间使用方面,ArrayList更节省一些。
如果有可能,在应用中使用collection框架是值得的,因为它是处理集合的标准方式。假设你关心线程安全问题,处理这个问题的一种方式是类似ArrayList的封装对象,例如:
List list = Collections.synchronizedList(new ArrayList());
这个技巧使得list成为线程安全的。
顺便问一句,我用ArrayList.get(i).name (name为数据对象属性值)不能成功,除非改为
object o=(object)ArrayList.get(i);
o.name
这种形式才行,我没有看出这两种方式质的不同,您觉得了?
hayai(生命树)的回答是最幽默的; geyf(其实我也不会)是最完全的; kinglomei(可乐猫) 是最耐心和仔细的;其它列位是最让人感动的。谨此向诸位给予的帮助表示感谢。^Z^