成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java中的集合框架大總結

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

[[271315]]

 直接上圖:

 

Java中的集合框架大總結

 

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

集合框架是一個用來代表和操縱集合的統一框架。所有的集合框架都包含如下內容:

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

實現(類):是集合接口的具體實現。從本質上講,它們是可重復使用的數據結構,例如:ArrayList、LinkedList、HashSet、HashMap。

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

一、集合接口:

1.Collection

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

2.List

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

3.Set

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

4.Map

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

5.Map.Entry

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

二、Set和List的區別:

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

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

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

三、集合實現類

1.AbstractCollection:實現了大部分的集合接口。

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

3.LinkedList:該類實現了List接口,允許有null元素。主要用于創建鏈表數據結構,LinkedList查找效率低。

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

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

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

7.LinkedHashSet:具有可預知迭代順序的Set接口的哈希表和鏈表列表實現。

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

9.AbstractMap:實現了大部分的Map接口。

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

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

12.LinkedHashMap:繼承于HashMap,使用元素的自然順序對元素進行排序。

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

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

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

1、遍歷ArrayList

/** * 采用不同的方法遍歷ArrayList集合 * 其中采用迭代器的方法可以不用擔心在遍歷的過程中會超出集合的長度 * */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.  * 其中采用迭代器的方法可以不用擔心在遍歷的過程中會超出集合的長度 
  4.  * 
  5.  */ 
  6. public class TestArrayList { 
  7.  public static void main(String[] args) { 
  8.  List<String> 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<list.size();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轉換為數組相關的內容進行遍歷 
  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.  //第四種遍歷:使用迭代器進行遍歷 
  34.  System.out.println("第四種遍歷:"); 
  35.  Iterator<String> iter = list.iterator(); 
  36.  while(iter.hasNext()) { //判斷下一個元素之后是否有值 
  37.  System.out.println(iter.next()); 
  38.  } 
  39.  } 

3、遍歷HashMap

  1. /** 
  2.  * 采用不同的方法遍歷HashSet集合 
  3.  * 
  4.  */ 
  5. public class TestHashSet { 
  6.  public static void main(String[] args) { 
  7.  Set<String> 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轉換為數組相關的內容進行遍歷 
  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.  //第三種遍歷:使用迭代器進行遍歷 
  27.  System.out.println("第三種遍歷:"); 
  28.  Iterator<String> iter = set.iterator(); 
  29.  while(iter.hasNext()) { //判斷下一個元素之后是否有值 
  30.  System.out.println(iter.next()); 
  31.  } 
  32.  } 

五、總結:

Java集合框架為程序員提供了預先包裝的數據結構來操縱它們,集合是一個對象,可容納其它對象的引用。集合接口聲明對每一種類型的集合可以執行相應的操作。集合框架的類和接口均在java.util包中。在使用泛型的情況下,泛型中的數據類型會限制集合中相應的數據類型,所以在取出時就是泛型中規定的數據類型;當沒有使用泛型時,有任何對象加入集合類后,會自動轉變為Object類型,所以在取出的時候,需要進行強制類型轉換。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2012-03-12 15:36:29

Java框架

2012-03-15 11:21:19

Java

2012-05-02 10:47:51

JavaJava集合框架

2011-07-11 11:02:12

JAVA集合框架

2009-06-30 14:01:00

Java集合框架Java數組排序

2015-09-11 09:40:35

Java集合框架

2017-11-07 13:24:38

Pythontime模塊datetime

2012-04-26 10:52:52

Java數組集合

2021-03-11 07:27:22

Java 集合數據

2009-06-29 16:50:27

Java集合框架

2023-10-09 07:57:14

JavaJCF

2015-12-24 10:13:29

JavaExecutor框架

2015-11-06 10:26:53

JavaExecutor框架

2010-06-11 17:10:02

Java框架開源

2015-09-14 15:34:12

PHP緩存技術

2015-09-11 09:17:55

JavaJava HashMa

2019-08-23 10:10:58

Nginx反向代理防盜鏈

2019-12-12 15:51:00

Java 開發者工具

2020-01-09 09:56:47

Java集合框架

2021-04-12 07:34:03

Java集合框架
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产视频综合 | 国产成人免费在线 | 人人射人人| 久久91av| 国产精品视频999 | 久久成人激情 | 日日天天 | 久久成人午夜 | 精品国产一区二区三区久久久四川 | 青青草社区| 日韩欧美一级精品久久 | 97操操| 欧美激情一区二区三级高清视频 | 久久久123| av免费在线观看网站 | 狠狠色香婷婷久久亚洲精品 | 日本中文字幕视频 | 亚洲高清视频在线 | 国产视频一区在线观看 | 国产精品久久毛片av大全日韩 | 精品福利视频一区二区三区 | 欧美精品99 | 欧美激情久久久久久 | 午夜av毛片| 欧美不卡视频 | 激情五月婷婷 | 日本不卡在线观看 | 夜夜骚 | 国产成人99久久亚洲综合精品 | 免费观看一级毛片 | 久久精品色欧美aⅴ一区二区 | 欧美一级在线观看 | 精品国产三级 | 久久久日韩精品一区二区三区 | 91操操操| 999久久久久久久久 国产欧美在线观看 | 久久久久一区二区三区四区 | 久久精品一区二区视频 | www.久草.com| 97久久精品 | 国产精品99|