集合类--ArrayList和Vector的区别?

解析:碰到这类题目,老师给的建议就是先别和面试官谈区别,而是巧妙的把相同点献上,再说出区别,让面试官眼前一亮的感觉。

相同点:
1.都是使用数组来存储数据的。
2.它们都是有序集合,并且其中的数据允许重复。(可以提及HashSet,因为HashSet不可以按索引号检查元素,并且不允许有重复元素。这样对比有利于说明问题。)
3.都是容量大小动态可变的数组。

不同点:
1.Vector是线程安全的,而ArrayList是线程不安全的。

在谈到线程是否安全这里,我们可以使用一个模板就是:
一旦线程安全,后面就可以说它的方法之间是线程同步的。然后举一反三。如果只有一个线程会访问到集合,最好使用线程不安全的那个,因为不用考虑线程安全,所以执行效率要高。而多个线程访问集合,最好使用线程安全的那个,这样不需要程序员再去考虑和编写线程安全的代码。

2.ArrayList与Vector都是一个初始的容量大小。如果存储超过容量,就需要增加存储空间。
Vector默认增长为原来的两倍,从源码看ArrayList增长为原来的1.5倍。Vector有设计增长空间的方法,而Vector没有。
3.Vector可以设置增长的空间大小,而ArrayList没有提供设置增长空间的方法。
本文并非全部原创,根据资料和自己的见解进行总结

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章