激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

香港云服务器
服務器之家 - 編程語言 - JAVA教程 - 詳解Java中Vector和ArrayList的區別

詳解Java中Vector和ArrayList的區別

2020-06-26 15:49川哥哥 JAVA教程

這篇文章主要為大家詳細介紹了Java中Vector和ArrayList的區別,具有一定的參考價值,感興趣的小伙伴們可以參考一下

首先看這兩類都實現List接口,而List接口一共有三個實現類,分別是ArrayListVector和LinkedList。List用于存放多個元素,能夠維護元素的次序,并且允許元素的重復。

3個具體實現類的相關區別如下:

1.ArrayList是最常用的List實現類,內部是通過數組實現的,它允許對元素進行快速隨機訪問。數組的缺點是每個元素之間不能有間隔,當數組大小不滿足時需要增加存儲能力,就要講已經有數組的數據復制到新的存儲空間中。當從ArrayList的中間位置插入或者刪除元素時,需要對數組進行復制、移動、代價比較高。因此,它適合隨機查找和遍歷,不適合插入和刪除。

2.Vector與ArrayList一樣,也是通過數組實現的,不同的是它支持線程的同步,即某一時刻只有一個線程能夠寫Vector,避免多線程同時寫而引起的不一致性,但實現同步需要很高的花費,因此,訪問它比訪問ArrayList慢。

3.LinkedList是用鏈表結構存儲數據的,很適合數據的動態插入和刪除,隨機訪問和遍歷速度比較慢。另外,他還提供了List接口中沒有定義的方法,專門用于操作表頭和表尾元素,可以當作堆棧、隊列和雙向隊列使用。

查看Java源代碼,發現當數組的大小不夠的時候,需要重新建立數組,然后將元素拷貝到新的數組內,ArrayList和Vector的擴展數組的大小不同。 

ArrayList中:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public boolean add(E e) {
 ensureCapacity(size + 1); // 增加元素,判斷是否能夠容納。不能的話就要新建數組
 elementData[size++] = e;
 return true;
}
 public void ensureCapacity(int minCapacity) {
 modCount++;
 int oldCapacity = elementData.length;
 if (minCapacity > oldCapacity) {
  Object oldData[] = elementData; // 此行沒看出來用處,不知道開發者出于什么考慮
  int newCapacity = (oldCapacity * 3)/2 + 1; // 增加新的數組的大小
  if (newCapacity < minCapacity)
  newCapacity = minCapacity;
   // minCapacity is usually close to size, so this is a win:
   elementData = Arrays.copyOf(elementData, newCapacity);
 
 }
 
}

Vector中:

?
1
2
3
4
5
6
7
8
9
10
11
12
private void ensureCapacityHelper(int minCapacity) {
 int oldCapacity = elementData.length;
 if (minCapacity > oldCapacity) {
  Object[] oldData = elementData;
  int newCapacity = (capacityIncrement > 0) ?
  (oldCapacity + capacityIncrement) : (oldCapacity * 2);
  if (newCapacity < minCapacity) {
  newCapacity = minCapacity;
  }
   elementData = Arrays.copyOf(elementData, newCapacity);
 }
}

關于ArrayList和Vector區別如下:

ArrayList在內存不夠時默認是擴展50% + 1個,Vector是默認擴展1倍。
Vector提供indexOf(obj, start)接口,ArrayList沒有。
Vector屬于線程安全級別的,但是大多數情況下不使用Vector,因為線程安全需要更大的系統開銷。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
389
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 一区二区三区四区在线 | 成人影片在线免费观看 | 色播av在线 | av电影院在线观看 | 亚洲第一成人在线视频 | 国产精品免费久久久久久 | 爱射av| 久久精品一区二区三区四区五区 | 一级看片免费视频 | av成人在线电影 | 国产一区二区免费看 | 国产无遮挡一级毛片 | 国产精品久久久久久久久久久久久久久久 | 91免费在线 | 欧美另类视频一区 | av电影在线播放 | 51色视频 | 国产精品性夜天天视频 | 亚洲91在线| 成年人高清视频在线观看 | 色淫视频 | 欧美成网 | 午夜视频免费在线观看 | 日本不卡视频在线观看 | 成人av一区二区免费播放 | 99re66热这里只有精品8 | 羞羞视频一区 | 欧美一级成人一区二区三区 | 亚洲综合视频网 | 88xx成人永久免费观看 | 免费毛片在线视频 | 成人小视频在线播放 | 九九热精 | 在线观看国产网站 | 羞羞视频免费观看网站 | 九九午夜| 国产成人高潮免费观看精品 | 全免费午夜一级毛片真人 | 奇米影视四色7777 | 爱操av | 国产精品亚洲一区二区三区久久 |