20180826(02)-Java集合框架

 

Java 集合框架java


早在Java 2中以前,Java就提供了特設類。
好比:Dictionary, Vector, Stack, 和Properties這些類用來存儲和操做對象組。程序員

雖然這些類都很是有用,可是它們缺乏一個核心的,統一的主題。因爲這個緣由,使用Vector類的方式和使用Properties類的方式有着很大不一樣。算法

集合框架被設計成要知足如下幾個目標。數組

1.該框架必須是高性能的。基本集合(動態數組,鏈表,樹,哈希表)的實現也必須是高效的。數據結構

2.該框架容許不一樣類型的集合,以相似的方式工做,具備高度的互操做性。架構

3.對一個集合的擴展和適應必須是簡單的。框架


爲此,整個集合框架就圍繞一組標準接口而設計。
你能夠直接使用這些接口的標準實現,諸如: LinkedList, HashSet, 和 TreeSet等,除此以外你也能夠經過這些接口實現本身的集合。數據結構和算法


集合框架是一個用來表明和操縱集合的統一架構。全部的集合框架都包含以下內容:性能

接口:是表明集合的抽象數據類型。接口容許集合獨立操縱其表明的細節。在面向對象的語言,接口一般造成一個層次。設計

實現(類):是集合接口的具體實現。從本質上講,它們是可重複使用的數據結構。

算法:是實現集合接口的對象裏的方法執行的一些有用的計算,例如:搜索和排序。這些算法被稱爲多態,那是由於相同的方法能夠在類似的接口上有着不一樣的實現。

除了集合,該框架也定義了幾個Map接口和類。Map裏存儲的是鍵/值對。儘管Map不是collections,可是它們徹底整合在集合中。

 

集合接口

集合框架定義了一些接口。本節提供了每一個接口的概述:


Collection 接口
容許你使用一組對象,是Collection層次結構的根接口。


List 接口
繼承於Collection和一個 List實例存儲一個有序集合的元素。


Set
繼承於 Collection,是一個不包含重複元素的集合。


SortedSet
繼承於Set保存有序的集合。


Map
將惟一的鍵映射到值。


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


SortedMap
繼承於Map,使Key保持在升序排列。


Enumeration
這是一個傳統的接口和定義的方法,經過它能夠枚舉(一次得到一個)對象集合中的元素。這個傳統接口已被迭代器取代。

 

集合類

Java提供了一套實現了Collection接口的標準集合類。其中一些是具體類,這些類能夠直接拿來使用,而另一些是抽象類,提供了接口的部分實現。

標準集合類彙總於下表:


AbstractCollection
實現了大部分的集合接口

AbstractList
繼承於AbstractCollection而且實現了大部分List接口

AbstractSequentialList
繼承於 AbstractList ,提供了對數據元素的鏈式訪問而不是隨機訪問。

LinkedList
繼承於 AbstractSequentialList,實現了一個鏈表。

ArrayList
經過繼承AbstractList,實現動態數組。

AbstractSet
繼承於AbstractCollection 而且實現了大部分Set接口。

HashSet
繼承了AbstractSet,而且使用一個哈希表。

LinkedHashSet
具備可預知迭代順序的 Set 接口的哈希表和連接列表實現。

TreeSet
繼承於AbstractSet,使用元素的天然順序對元素進行排序.

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

HashMap
繼承了HashMap,而且使用一個哈希表。

TreeMap
繼承了AbstractMap,而且使用一顆樹。

WeakHashMap
繼承AbstractMap類,使用弱密鑰的哈希表。

LinkedHashMap
繼承於HashMap,使用元素的天然順序對元素進行排序.

IdentiyHashMap
繼承AbstractMap類,比較文檔時使用引用相等。

 

Vector
Vector類實現了一個動態數組。和ArrayList和類似,可是二者是不一樣的。

Stack
棧是Vector的一個子類,它實現了一個標準的後進先出的棧。

Dictionary
Dictionary 類是一個抽象類,用來存儲鍵/值對,做用和Map類類似。

Hashtable
Hashtable是原始的java.util的一部分, 是一個Dictionary具體的實現 。

Properties
Properties 繼承於 Hashtable.表示一個持久的屬性集.屬性列表中每一個鍵及其對應值都是一個字符串。

BitSet
一個Bitset類建立一種特殊類型的數組來保存位值。BitSet中數組大小會隨須要增長。

一個Bitset類建立一種特殊類型的數組來保存位值。BitSet中數組大小會隨須要增長。

 

 

集合算法

集合框架定義了幾種算法,可用於集合和映射。這些算法被定義爲集合類的靜態方法。

在嘗試比較不兼容的類型時,一些方法可以拋出 ClassCastException異常。當試圖修改一個不可修改的集合時,拋出UnsupportedOperationException異常。

集合定義三個靜態的變量:EMPTY_SET EMPTY_LIST,EMPTY_MAP的。這些變量都不可改變。


Collection Algorithms
這裏是一個列表中的全部算法實現。

 

 

如何使用迭代器

一般狀況下,你會但願遍歷一個集合中的元素。例如,顯示集合中的每一個元素。
作到這一點最簡單的方法是採用一個迭代器,它是一個對象,實現了Iterator 接口或ListIterator接口。

迭代器,使你可以經過循環來獲得或刪除集合的元素。ListIterator繼承了Iterator,以容許雙向遍歷列表和修改元素。

這裏經過實例列出Iterator和listIterator接口提供的全部方法。

 

如何使用比較器

TreeSet和TreeMap的按照排序順序來存儲元素. 然而,這是經過比較器來精肯定義按照什麼樣的排序順序。

這個接口可讓咱們以不一樣的方式來排序一個集合。

比較器方法描述
使用 Java Comparator
這裏經過實例列出Comparator接口提供的全部方法


總結

Java集合框架爲程序員提供了預先包裝的數據結構和算法來操縱他們。集合是一個對象,可容納其餘對象的引用。集合接口聲明對每一種類型的集合能夠執行的操做。集合框架的類和接口均在java.util包中。

相關文章
相關標籤/搜索