1. 程式人生 > >Java集合----基本架構

Java集合----基本架構

p s ont 結構 文件 b- cto -s 集合類 常用方法

一、集合類簡介

集合類的由來:

對象用於封裝特有數據,對象多了需要存儲,如果對象的個數不確定。

就使用集合容器進行存儲

集合特點:

1.用於存儲對象的容器

2.集合的長度可變

3.集合中不可以存儲基本數據類型

集合與數組的區別:

集合是可變長度的,而數組時不可變的

二、Java提供的集合類的基本架構

常用的就這兩個接口,當然類可不止這些。

|--Collection接口(單列集合)

|--List接口

|--ArrayList

|--LinkedList

|--Set接口

|--HashSet

|--LinkedHashSet

|--TreeSet

|--Map接口(雙列集合)

|--HashMap

|--LinkedHashMap

|--TreeMap

|--Hashtable

|--Properties

三、Collection接口

集合層次結構 中的根接口。Collection 表示一組對象,這些對象也稱為 collection 的元素。一些

collection 允許有重復的元素,而另一些則不允許。一些 collection 是有序的,而另一些則是無序的。

JDK 不提供此接口的任何直接 實現:它提供更具體的子接口(如 SetList)實現。此接口通常用來傳遞

collection,並在需要最大普遍性的地方操作這些 collection。

Collection接口的常用方法:


1.添加。

boolean add(Object obj);

boolean addAll(Collection coll);

2.刪除。

boolean remove(Object obj);

boolean removeAll(Collection coll);

void clear();

3.判斷:

boolean contains(Object obj);

boolean containsAll(Collection coll);

boolean isEmpty();判斷集合中是否有元素。底層是size()。


4.獲取:

int size();

Iterator iterator();取出元素的方式:叠代器

5.其它:

boolean retainAll(Collection coll);取交集。

Object[] toArray()將集合轉成數組。

四、List接口

他是Collection接口的子接口,它的最大特點是具有角標,因此該集合數據的插入是有序的,

並且可以根據角標精確控制數據的位置。下面是它的實現類的比較:

|--Vector:內部是數組數據結構,是同步的,幾乎不用了。 jdk1.0出現的 兩倍延長(增刪查詢都很慢)

|--ArrayList:內部是數組數據結構,是不同步的。替代了Vector。 1.5倍延長(增刪速度比較慢,查

找速度很快)

|--LinkedList:內部是鏈表數據結構,是不同步的。(增刪快,查找慢)LinkedList也是有角標的,因為

他是List接口的子類,List最大的特點就是有角標

五、set接口

也是Collection集合的子接口,它不具有角標,數據也是無序的,並且元素不允許重復。下面是他的實現

類:

|--HashSet:內部數據結構是哈希表,是不同步的。

確定元素是否相同:

(1):判斷兩個元素的哈希值是否相同。如果相同,再判斷兩個對象的內容是否相同

註:判斷哈希值相同,其實判斷的是對象的hashcode()的方法。判斷內容相同,用的是equals方法

註意:如果哈希值不同,是不需要判斷equals的

哈希沖突:哈希值相同,內容不同。哈希會進行順延存儲或者重新算一個位置進行存儲

|--TreeSet:

它的底層是二叉樹,使用元素的自然順序進行排序,是不同步的

存自定義對象時必須實現Comparable接口

判斷元素的唯一性方式:就是根據返回值來判斷,如果返回為0就視為元素相同

TreeSet對元素進行排序的方式一:

讓元素自身具備比較功能,就需要實現Comparable接口。覆蓋comparaTo方法

TreeSet集合的排序方式二:

讓集合自身具備比較功能,使用比較器,定義一個類實現Comparator接口,覆蓋compare方法,將該類對象作為參數

傳遞給TreeSet集合的構造函數

|--LinkedHashSet:有序且不重復。是HashSet的擴展

六、Map接口

一次添加一對元素。Collection一次添加一個元素,Map也稱為雙列集合。Collection也稱為單列集合

其實Map集合中存儲的就是鍵值對,Map集合中必須保證鍵的唯一性。下面是他的實現類:

|--Hashtable:內部結構是哈希表,是同步的。不允許null作為作為

|--Properties:一般用於存儲配置文件的鍵和值。十分常用

|--HashMap:內部結構是哈希表,不是同步的。允許null作為鍵作為值

|--LinkedHashMap:內部結構為鏈表加哈希表,有序,怎麽存進去怎麽取出來

|--TreeMap:內部結構是二叉樹,不是同步的。可以對Map集合中的鍵進行排序








Java集合----基本架構