亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java集合類中文介紹

2019-11-26 15:55:14
字體:
來源:轉載
供稿:網友

Java集合是java提供的工具包,包含了常用的數據結構:集合、鏈表、隊列、棧、數組、映射等。Java集合工具包位置是java.util.*
Java集合主要可以劃分為4個部分:List列表、Set集合、Map映射、工具類(Iterator迭代器、Enumeration枚舉類、Arrays和Collections)、。
Java集合工具包框架圖(如下):
大致說明:

看上面的框架圖,先抓住它的主干,即Collection和Map。
1 Collection是一個接口,是高度抽象出來的集合,它包含了集合的基本操作和屬性。
  Collection包含了List和Set兩大分支。
  (01) List是一個有序的隊列,每一個元素都有它的索引。第一個元素的索引值是0。
          List的實現類有LinkedList, ArrayList, Vector, Stack。
  (02) Set是一個不允許有重復元素的集合。
          Set的實現類有HastSet和TreeSet。HashSet依賴于HashMap,它實際上是通過HashMap實現的;TreeSet依賴于TreeMap,它實際上是通過TreeMap實現的。
2 Map是一個映射接口,即key-value鍵值對。Map中的每一個元素包含“一個key”和“key對應的value”。
   AbstractMap是個抽象類,它實現了Map接口中的大部分API。而HashMap,TreeMap,WeakHashMap都是繼承于AbstractMap。
   Hashtable雖然繼承于Dictionary接口,但它實現了Map接口。
接下來,再看Iterator。它是遍歷集合的工具,即我們通常通過Iterator迭代器來遍歷集合。我們說Collection依賴于Iterator,是因為Collection的實現類都要實現iterator()函數,返回一個Iterator對象。
ListIterator是專門為遍歷List而存在的。
再看Enumeration,它是JDK 1.0引入的抽象類。作用和Iterator一樣,也是遍歷集合;但是Enumeration的功能要比Iterator少。在上面的框圖中,Enumeration只能在Hashtable, Vector, Stack中使用。
最后,看Arrays和Collections。它們是操作數組、集合的兩個工具類。
有了上面的整體框架之后,我們接下來對每個類分別進行分析。

Collection簡介
下面先看看Collection的一些框架類的關系圖:

Collection是一個接口,它主要的兩個分支是:List 和 Set。
List和Set都是接口,它們繼承于Collection。List是有序的隊列,List中可以有重復的元素;而Set是數學概念中的集合,Set中沒有重復元素!
List和Set都有它們各自的實現類。
  為了方便,我們抽象出了AbstractCollection抽象類,它實現了Collection中的絕大部分函數;這樣,在Collection的實現類中,我們就可以通過繼承AbstractCollection省去重復編碼。AbstractList和AbstractSet都繼承于AbstractCollection,具體的List實現類繼承于AbstractList,而Set的實現類則繼承于AbstractSet。
  另外,Collection中有一個iterator()函數,它的作用是返回一個Iterator接口。通常,我們通過Iterator迭代器來遍歷集合。ListIterator是List接口所特有的,在List接口中,通過ListIterator()返回一個ListIterator對象。
  接下來,我們看看各個接口和抽象類的介紹;然后,再對實現類進行詳細的了解。
Collection的定義如下:

復制代碼 代碼如下:

public interface Collection<E> extends Iterable<E> {}

 它是一個接口,是高度抽象出來的集合,它包含了集合的基本操作:添加、刪除、清空、遍歷(讀取)、是否為空、獲取大小、是否保護某元素等等。

Collection接口的所有子類(直接子類和間接子類)都必須實現2種構造函數:不帶參數的構造函數 和 參數為Collection的構造函數。帶參數的構造函數,可以用來轉換Collection的類型。

復制代碼 代碼如下:

// Collection的API
abstract boolean         add(E object)
abstract boolean         addAll(Collection<? extends E> collection)
abstract void            clear()
abstract boolean         contains(Object object)
abstract boolean         containsAll(Collection<?> collection)
abstract boolean         equals(Object object)
abstract int             hashCode()
abstract boolean         isEmpty()
abstract Iterator<E>     iterator()
abstract boolean         remove(Object object)
abstract boolean         removeAll(Collection<?> collection)
abstract boolean         retainAll(Collection<?> collection)
abstract int             size()
abstract <T> T[]         toArray(T[] array)
abstract Object[]        toArray()


 
2 List簡介
List的定義如下:
復制代碼 代碼如下:

public interface List<E> extends Collection<E> {}

List是一個繼承于Collection的接口,即List是集合中的一種。List是有序的隊列,List中的每一個元素都有一個索引;第一個元素的索引值是0,往后的元素的索引值依次+1。和Set不同,List中允許有重復的元素。
List的官方介紹如下:
A List is a collection which maintains an ordering for its elements. Every element in the List has an index. Each element can thus be accessed by its index, with the first index being zero. Normally, Lists allow duplicate elements, as compared to Sets, where elements have to be unique.

 
關于API方面。既然List是繼承于Collection接口,它自然就包含了Collection中的全部函數接口;由于List是有序隊列,它也額外的有自己的API接口。主要有“添加、刪除、獲取、修改指定位置的元素”、“獲取List中的子隊列”等。
復制代碼 代碼如下:

// Collection的API
abstract boolean         add(E object)
abstract boolean         addAll(Collection<? extends E> collection)
abstract void            clear()
abstract boolean         contains(Object object)
abstract boolean         containsAll(Collection<?> collection)
abstract boolean         equals(Object object)
abstract int             hashCode()
abstract boolean         isEmpty()
abstract Iterator<E>     iterator()
abstract boolean         remove(Object object)
abstract boolean         removeAll(Collection<?> collection)
abstract boolean         retainAll(Collection<?> collection)
abstract int             size()
abstract <T> T[]         toArray(T[] array)
abstract Object[]        toArray()
// 相比與Collection,List新增的API:
abstract void                add(int location, E object)
abstract boolean             addAll(int location, Collection<? extends E> collection)
abstract E                   get(int location)
abstract int                 indexOf(Object object)
abstract int                 lastIndexOf(Object object)
abstract ListIterator<E>     listIterator(int location)
abstract ListIterator<E>     listIterator()
abstract E                   remove(int location)
abstract E                   set(int location, E object)
abstract List<E>             subList(int start, int end)


 
3 Set簡介
Set的定義如下:
復制代碼 代碼如下:

public interface Set<E> extends Collection<E> {}

Set是一個繼承于Collection的接口,即Set也是集合中的一種。Set是沒有重復元素的集合。
關于API方面。Set的API和Collection完全一樣。
復制代碼 代碼如下:

// Set的API
abstract boolean         add(E object)
abstract boolean         addAll(Collection<? extends E> collection)
abstract void             clear()
abstract boolean         contains(Object object)
abstract boolean         containsAll(Collection<?> collection)
abstract boolean         equals(Object object)
abstract int             hashCode()
abstract boolean         isEmpty()
abstract Iterator<E>     iterator()
abstract boolean         remove(Object object)
abstract boolean         removeAll(Collection<?> collection)
abstract boolean         retainAll(Collection<?> collection)
abstract int             size()
abstract <T> T[]         toArray(T[] array)
abstract Object[]         toArray()


 
4 AbstractCollection
AbstractCollection的定義如下:
public abstract class AbstractCollection<E> implements Collection<E> {}
AbstractCollection是一個抽象類,它實現了Collection中除iterator()和size()之外的函數。
AbstractCollection的主要作用:它實現了Collection接口中的大部分函數。從而方便其它類實現Collection,比如ArrayList、LinkedList等,它們這些類想要實現Collection接口,通過繼承AbstractCollection就已經實現了大部分的接口了。

 
5 AbstractList
AbstractList的定義如下:
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {}
AbstractList是一個繼承于AbstractCollection,并且實現List接口的抽象類。它實現了List中除size()、get(int location)之外的函數。
AbstractList的主要作用:它實現了List接口中的大部分函數。從而方便其它類繼承List。
另外,和AbstractCollection相比,AbstractList抽象類中,實現了iterator()接口。

 
6 AbstractSet
AbstractSet的定義如下:
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> {}
AbstractSet是一個繼承于AbstractCollection,并且實現Set接口的抽象類。由于Set接口和Collection接口中的API完全一樣,Set也就沒有自己單獨的API。和AbstractCollection一樣,它實現了List中除iterator()和size()之外的函數。
AbstractSet的主要作用:它實現了Set接口中的大部分函數。從而方便其它類實現Set接口。

 
7 Iterator
Iterator的定義如下:
復制代碼 代碼如下:

public interface Iterator<E> {}

Iterator是一個接口,它是集合的迭代器。集合可以通過Iterator去遍歷集合中的元素。Iterator提供的API接口,包括:是否存在下一個元素、獲取下一個元素、刪除當前元素。
注意:Iterator遍歷Collection時,是fail-fast機制的。即,當某一個線程A通過iterator去遍歷某集合的過程中,若該集合的內容被其他線程所改變了;那么線程A訪問集合時,就會拋出ConcurrentModificationException異常,產生fail-fast事件。關于fail-fast的詳細內容,我們會在后面專門進行說明。TODO
復制代碼 代碼如下:

// Iterator的API
abstract boolean hasNext()
abstract E next()
abstract void remove()
 


8 ListIterator
ListIterator的定義如下:
復制代碼 代碼如下:

public interface ListIterator<E> extends Iterator<E> {}

ListIterator是一個繼承于Iterator的接口,它是隊列迭代器。專門用于便利List,能提供向前/向后遍歷。相比于Iterator,它新增了添加、是否存在上一個元素、獲取上一個元素等等API接口。
復制代碼 代碼如下:

// ListIterator的API
// 繼承于Iterator的接口
abstract boolean hasNext()
abstract E next()
abstract void remove()
// 新增API接口
abstract void add(E object)
abstract boolean hasPrevious()
abstract int nextIndex()
abstract E previous()
abstract int previousIndex()
abstract void set(E object)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧洲自拍偷拍| 亚洲欧美资源在线| 一本一本久久a久久精品综合小说| 97精品欧美一区二区三区| 国产一区二区三区在线| 欧洲午夜精品久久久| 亚洲精品电影在线观看| 久久久久久国产精品| 自拍偷拍亚洲区| 91探花福利精品国产自产在线| 国产精品视频一区国模私拍| 亚洲一区二区三区四区视频| 日韩网站免费观看高清| 欧美国产日韩一区二区三区| 亚洲福利视频久久| 成人性生交大片免费观看嘿嘿视频| 懂色av一区二区三区| 超碰日本道色综合久久综合| 久久久久久久色| 欧美精品免费播放| 国产视频精品久久久| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品免费观看在线| 亚洲欧美精品中文字幕在线| 欧美高清在线观看| 日韩成人中文字幕在线观看| 国产精品久久久久aaaa九色| 亚洲另类激情图| 亚洲小视频在线| 欧美日产国产成人免费图片| 国产亚洲美女精品久久久| 国产裸体写真av一区二区| 久久免费国产精品1| 久久91亚洲人成电影网站| 亚洲男人天堂手机在线| 色系列之999| 欧美在线日韩在线| 国产精品成人av性教育| 欧美激情女人20p| 亚洲国模精品私拍| 亚洲国产日韩一区| 26uuu另类亚洲欧美日本一| 欧美性受xxxx白人性爽| 日韩在线播放一区| 欧美国产日韩一区二区三区| 92看片淫黄大片看国产片| 日韩精品久久久久久久玫瑰园| 久久精品国产99国产精品澳门| 一本大道香蕉久在线播放29| 欧美激情国内偷拍| 国产亚洲激情视频在线| 亚洲美女av在线| 亚洲欧美日韩在线高清直播| 亚洲高清久久网| 国产美女搞久久| 国产在线播放91| 九九热99久久久国产盗摄| 日本乱人伦a精品| 欧美另类69精品久久久久9999| 欧美大片大片在线播放| 亚洲男人的天堂在线| 美乳少妇欧美精品| 亚洲一区www| 91chinesevideo永久地址| 欧美成人激情视频| 97精品在线视频| 国产狼人综合免费视频| 亚洲欧美日韩天堂| 欧美激情极品视频| 欧美日韩国产999| 成人福利免费观看| 亚洲精品国产suv| 久久伊人精品一区二区三区| 国产欧美精品一区二区三区-老狼| 久久久av电影| 欧美成人午夜剧场免费观看| 亚洲欧美另类中文字幕| 国产精品三级久久久久久电影| 国产精品久久久久久久久久99| 尤物yw午夜国产精品视频| 在线精品国产欧美| 九九久久久久99精品| 久久久久国色av免费观看性色| 国内揄拍国内精品| 91亚洲va在线va天堂va国| 69av在线视频| 国产精品第七十二页| 久久精品国产视频| 国产成人精品国内自产拍免费看| 136fldh精品导航福利| 日韩精品高清视频| 亚洲国产精品va在线看黑人| 中文字幕日韩精品在线观看| 国产精品流白浆视频| 欧美一级视频在线观看| 午夜精品视频网站| 精品国产乱码久久久久久虫虫漫画| 国产成人小视频在线观看| 欧美精品国产精品日韩精品| 青青草一区二区| 欧洲一区二区视频| 91精品国产自产在线| 亚洲久久久久久久久久久| 欧美人与性动交a欧美精品| 亚洲精品国产免费| 日韩av影院在线观看| 亚洲黄色在线观看| 国产日韩欧美在线看| 欧美成人免费网| 7m精品福利视频导航| 亚洲第一中文字幕在线观看| 色悠久久久久综合先锋影音下载| 久久久久久中文字幕| 亚洲国产精彩中文乱码av| 自拍偷拍亚洲一区| 亚洲福利精品在线| 日韩欧美国产成人| 亚洲aaaaaa| 久久亚洲私人国产精品va| 国产suv精品一区二区三区88区| 亚洲美女免费精品视频在线观看| 亚洲a级在线观看| 日韩在线播放一区| 国产精品99久久99久久久二8| 奇米成人av国产一区二区三区| 精品一区精品二区| 美女视频黄免费的亚洲男人天堂| 亚洲欧洲日本专区| 欧美性做爰毛片| 大胆人体色综合| 久久久国产一区二区| 在线午夜精品自拍| 国产欧美一区二区三区在线| 一区二区三区视频在线| 日韩av在线免播放器| 4388成人网| 亚洲美女在线看| 亚洲欧美综合图区| 欧美最猛性xxxxx免费| 91麻豆国产语对白在线观看| 亚洲精品av在线播放| 国产mv久久久| 亚洲精品美女网站| 日韩一区二区三区国产| 欧美激情亚洲激情| 国产精品福利在线观看网址| 国产在线精品成人一区二区三区| 久久综合伊人77777尤物| 欧美精品激情blacked18| 欧美激情小视频| 欧美日韩性生活视频| 中文字幕不卡在线视频极品| 国产成人精彩在线视频九色| 日韩精品在线观看视频| 国产这里只有精品| 免费97视频在线精品国自产拍| 国产精品久久久久影院日本| 国产999在线观看| 91久久在线视频| 亚洲第一在线视频| 色小说视频一区| 色999日韩欧美国产| 在线中文字幕日韩| 成人精品一区二区三区|