1. 程式人生 > >JAVA-初步認識-常用對象API(集合框架-List常用子類的特點)

JAVA-初步認識-常用對象API(集合框架-List常用子類的特點)

只需要 大小 虛線 版本 技術 鏈接 bubuko 就是 編號

一.

技術分享圖片

凡是虛線框都是接口,我們真正在使用的時候,用的是接口中的子類,

技術分享圖片

List接口中,有一堆子類,是我們開發中常用的容器。ArrayList,LinkList,Vecter這三個算是開發中比較常用的。

(list下面有三個常用的對象)

具體的容器必須明確其特點,那麽你才知道什麽時候該用這容器。

1. vector

技術分享圖片

容器之所以能夠進行區分,是因為容器的內部的數據結構不一樣,現在vector內部用的就是一個數組。數組本身就是一種存儲數據的方式,本身就是一種結構。這種結構的特點在於,每一個元素上都帶著編號,而且是連續地存儲。一開辟空間,很多的小格子就出來了。

vetor從1.0版本就出現了,這個接口1.2才出來(vetor是早就有了,但是稱為List接口的子類接口是從1.2開始的),

技術分享圖片

在1.0的時候,用的集合就一個vetor,到1.2才有的集合框架,才加了各種數據結構進來,產生了一個體系。1.2的時候也把vetor納入進來了,vetor是元老級別的,它1.2才實現了list,具備了list功能,並成為java集合框架中的成員。vetor是同步的,也就是說線程是安全的。

2. ArrayList

內部也是數組結構,而且是可變的,是不同步的。為什麽會有ArrayList的出現,因為vetor的同步效率低。結構是一樣的,為什麽要出現兩個,因為替代了vetor。如果是多線程怎麽辦?就采用vetor?(不是),我們要麽給ArrayList加鎖,要麽采用其他方式。vetor幾乎不用了。怎麽加鎖呢?把那些添加刪除的方法放到同一個鎖裏面就可以了。

ArrayList中提高了一個大小可變數組,vetor中也提到了可增長的對象數組。什麽叫長度可變的數組?原先我們學習的時候,數組是固定長度,集合怎麽實現不斷地往裏面加元素呢?可變長度數組原理,創建一個新數組,將原來數組中的內容都復制到新數組中來。

vetor是一定延長,ArrayList是有一半的機率延長。vetor是既浪費空間,也浪費效率,ArrayList會比vetor強一些。

3. linkedList

技術分享圖片

鏈接列表簡稱鏈表。

集合中,只要不是vetor,都是非同步的,因為效率高。

鏈表什麽特點呢?數組怎麽存儲元素呢?將空間切割成多個小方格,然後將元素存儲進去。怎麽存儲進去的呢?數組一開辟空間,都有角標,依據角標來存儲元素。

鏈表是這樣的:前一個元素的格子,記住下一個元素的角標值。

鏈表結構要是刪除某一個元素,只需要記住下下個元素的角標值就可以了。

為什麽要數據結構,就是對數據操作不一樣,操作特點有所不同。鏈表這種結構刪除元素的速度很快。

技術分享圖片

JAVA-初步認識-常用對象API(集合框架-List常用子類的特點)