我想了解array,arrayList,linkedList,vector的用法。请问这四个有什么分别?什么时候该用array,什么时候该用arrayList,什么时候该用linkedList,什么时候该用vector呢?麻烦解释一下。谢谢!
Array是数组,其他3个是集合,但是其内部实现机制还是以Objec的数组形式来存储的。
同步性:
ArrayList,LinkedList是不同步的,而Vestor是的。所以如果要求线程安全的话,可以使用ArrayList或LinkedList,可以节省为同步而耗费开销。
数据增长:
Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%。
检索、插入、删除对象的效率:
ArrayList和Vector中,从指定的位置(用index)检索一个对象,或在集合的末尾插入、删除一个对象的时间是一样的,可表示为O(1)。但是,如果在集合的其他位置增加或移除元素那么花费的时间会呈线形增长:O(n-i),其中n代表集合中元素的个数,i代表元素增加或移除元素的索引位置。为什么会这样呢?以为在进行上述操作的时候集合中第i和第i个元素之后的所有元素都要执行(n-i)个对象的位移操作。
LinkedList中,在插入、删除集合中任何位置的元素所花费的时间都是一样的—O(1),但它在索引一个元素的时候比较慢,为O(i),其中i是索引的位置。
所以,如果只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用Vector或ArrayList都可以。如果是对其它指定位置的插入、删除操作,最好选择LinkedList