日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java中的集合框架大總結(jié)

 直接上圖:

定結(jié)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

從上面的集合框架圖可以看到:Java集合框架主要包括兩種類型的容器,一種是集合(Collection),存儲一個元素集合;另一種是圖(Map),存儲鍵/值對映射。Collection接口又有兩個子接口,List和Set,再下面是一些抽象類,最后是具體實現(xiàn)類,常用的有ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap等等。

集合框架是一個用來代表和操縱集合的統(tǒng)一框架。所有的集合框架都包含如下內(nèi)容:

接口:是代表集合的抽象數(shù)據(jù)類型。例如:Collection、List、Set、Map等。之所以定義多個接口,是為了以不同的方式操作集合對象。

實現(xiàn)(類):是集合接口的具體實現(xiàn)。從本質(zhì)上講,它們是可重復(fù)使用的數(shù)據(jù)結(jié)構(gòu),例如:ArrayList、LinkedList、HashSet、HashMap。

除了集合,該框架也定義了幾個Map接口和類。Map里存儲的是鍵/值對。盡管Map不是集合,但是它們完全整合在集合中。Java集合框架提供了一套性能優(yōu)良,使用方便的接口和類,Java集合框架位于java.util包中,所以當(dāng)使用集合框架的時候需要進(jìn)行導(dǎo)包。

一、集合接口:

1.Collection

Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素,Java不提供直接繼承自Collection的類,只提供繼承于Collection的子接口(如List和Set),Collection接口存儲一組不唯一,沒有順序的對象。

2.List

List接口是一個有順序的Collection,使用此接口能夠精確地控制每個元素插入的位置,能夠通過索引(元素在List中的位置,類似于數(shù)組的下標(biāo))來訪問List 中的元素,第一個元素的索引為0,而且允許有相同的元素。List接口存儲一組不唯一,有序(插入順序)的對象。

3.Set

Set具有與List完全一樣的接口,只是行為上不同,Set不保存重復(fù)的元素。Set接口存儲一組唯一,無序的對象。

4.Map

Map接口存儲一組鍵值對對象,提供key(鍵)到value(值)的映射。

5.Map.Entry

Map.Entry描述在一個Map中的一個元素(鍵/值對),是一個Map的內(nèi)部接口。

二、Set和List的區(qū)別:

1.Set接口實例存儲的是無序的,不重復(fù)的數(shù)據(jù)。List接口實例存儲的是有序的,可以重復(fù)的元素。

2.Set檢索效率低下,刪除和插入效率高,插入和刪除不會引起元素位置的改變,實現(xiàn)類有HashSet,TreeSet。

3.List和數(shù)組類似,可以動態(tài)增長,根據(jù)實際存儲的數(shù)據(jù)的長度自動增長List的長度。查找元素效率高,插入刪除效率低,因為會引起其他元素位置改變,實現(xiàn)類有ArrayList,LinkedList,Vector。

三、集合實現(xiàn)類

1.AbstractCollection:實現(xiàn)了大部分的集合接口。

2.AbstractList:繼承于AbstractCollection并且實現(xiàn)了大部分List接口。

3.LinkedList:該類實現(xiàn)了List接口,允許有null元素。主要用于創(chuàng)建鏈表數(shù)據(jù)結(jié)構(gòu),LinkedList查找效率低。

4.ArrayList:該類也是實現(xiàn)了List的接口,實現(xiàn)了可變大小的數(shù)組,隨機訪問和遍歷元素時,提供更好地性能。

5.AbstractSet:繼承于AbstractCollection并且實現(xiàn)了大部分Set接口。

6.HashSet:該類實現(xiàn)了Set接口,不允許出現(xiàn)重復(fù)元素,不保證集合中元素的順序,允許包含值為null的元素,但最多只能有一個。

7.LinkedHashSet:具有可預(yù)知迭代順序的Set接口的哈希表和鏈表列表實現(xiàn)。

8.TreeSet:該類實現(xiàn)了Set接口,可以實現(xiàn)排序等功能。

9.AbstractMap:實現(xiàn)了大部分的Map接口。

10.HashMap:HashMap是一個散列表,它存儲的內(nèi)容是鍵值對(key-value)映射。該類實現(xiàn)了Map接口,根據(jù)鍵的HashCode值存儲數(shù)據(jù),具有很快的訪問速度,最多允許一條記錄的鍵為null,不支持線程同步。

11.TreeMap:繼承了AbstractMap,并且使用一棵樹。

12.LinkedHashMap:繼承于HashMap,使用元素的自然順序?qū)υ剡M(jìn)行排序。

13.Vector:該類和ArrayList非常相似,但是該類是同步的,可以用在多線程的情況,該類允許設(shè)置默認(rèn)的增長長度,默認(rèn)擴(kuò)容方式為原來的2倍。

14.HashTable:HashTable是Dictionary(字典)類的子類,位于java.util包中。

四、迭代器的使用(遍歷集合)

1、遍歷ArrayList

/** * 采用不同的方法遍歷ArrayList集合 * 其中采用迭代器的方法可以不用擔(dān)心在遍歷的過程中會超出集合的長度 * */public class TestArrayList { public static void main(String[] args) { List list = new ArrayList<>(); list.add("吳永吉"); list.add("吳宇濤"); list.add("吳旭東"); //第一種遍歷:使用普通for System.out.println("第一種遍歷:"); for(int i=0;i

2、遍歷HashSet

 
 
 
 
  1. /**
  2.  * 采用不同的方法遍歷ArrayList集合
  3.  * 其中采用迭代器的方法可以不用擔(dān)心在遍歷的過程中會超出集合的長度
  4.  *
  5.  */
  6. public class TestArrayList {
  7.  public static void main(String[] args) {
  8.  List list = new ArrayList<>();
  9.  list.add("吳永吉");
  10.  list.add("吳宇濤");
  11.  list.add("吳旭東");
  12.  
  13.  //第一種遍歷:使用普通for
  14.  System.out.println("第一種遍歷:");
  15.  for(int i=0;i
  16.  System.out.println(list.get(i));
  17.  }
  18.  
  19.  //第二種遍歷:使用foreach
  20.  System.out.println("第二種遍歷:");
  21.  for(String str:list) {
  22.  System.out.println(str);
  23.  }
  24.  
  25.  //第三種遍歷:將list轉(zhuǎn)換為數(shù)組相關(guān)的內(nèi)容進(jìn)行遍歷
  26.  System.out.println("第三種遍歷:");
  27.  String[] strArray = new String[list.size()];
  28.  list.toArray(strArray);
  29.  for(String str:strArray) {
  30.  System.out.println(str);
  31.  }
  32.  
  33.  //第四種遍歷:使用迭代器進(jìn)行遍歷
  34.  System.out.println("第四種遍歷:");
  35.  Iterator iter = list.iterator();
  36.  while(iter.hasNext()) { //判斷下一個元素之后是否有值
  37.  System.out.println(iter.next());
  38.  }
  39.  }
  40. }

3、遍歷HashMap

 
 
 
 
  1. /**
  2.  * 采用不同的方法遍歷HashSet集合
  3.  *
  4.  */
  5. public class TestHashSet {
  6.  public static void main(String[] args) {
  7.  Set set = new HashSet<>();
  8.  set.add("吳永吉");
  9.  set.add("吳宇濤");
  10.  set.add("吳旭東");
  11.  
  12.  //第一種遍歷:使用foreach
  13.  System.out.println("第一種遍歷:");
  14.  for(String str:set) {
  15.  System.out.println(str);
  16.  }
  17.  
  18.  //第二種遍歷:將set轉(zhuǎn)換為數(shù)組相關(guān)的內(nèi)容進(jìn)行遍歷
  19.  System.out.println("第二種遍歷:");
  20.  String[] strArray = new String[set.size()];
  21.  set.toArray(strArray);
  22.  for(String str:strArray) {
  23.  System.out.println(str);
  24.  }
  25.  
  26.  //第三種遍歷:使用迭代器進(jìn)行遍歷
  27.  System.out.println("第三種遍歷:");
  28.  Iterator iter = set.iterator();
  29.  while(iter.hasNext()) { //判斷下一個元素之后是否有值
  30.  System.out.println(iter.next());
  31.  }
  32.  }
  33. }

五、總結(jié):

Java集合框架為程序員提供了預(yù)先包裝的數(shù)據(jù)結(jié)構(gòu)來操縱它們,集合是一個對象,可容納其它對象的引用。集合接口聲明對每一種類型的集合可以執(zhí)行相應(yīng)的操作。集合框架的類和接口均在java.util包中。在使用泛型的情況下,泛型中的數(shù)據(jù)類型會限制集合中相應(yīng)的數(shù)據(jù)類型,所以在取出時就是泛型中規(guī)定的數(shù)據(jù)類型;當(dāng)沒有使用泛型時,有任何對象加入集合類后,會自動轉(zhuǎn)變?yōu)镺bject類型,所以在取出的時候,需要進(jìn)行強制類型轉(zhuǎn)換。


分享標(biāo)題:Java中的集合框架大總結(jié)
URL地址:http://www.dlmjj.cn/article/cdieogo.html