国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

JAVA教學手冊 / Java 集合框架

Java 集合框架

早在Java 2中之前,Java就提供了特設類。比如:Dictionary, Vector, Stack, 和Properties這些類用來存儲和操作對象組。

雖然這些類都非常有用,但是它們缺少一個核心的,統(tǒng)一的主題。由于這個原因,使用Vector類的方式和使用Properties類的方式有著很大不同。

集合框架被設計成要滿足以下幾個目標。

  • 該框架必須是高性能的。基本集合(動態(tài)數(shù)組,鏈表,樹,哈希表)的實現(xiàn)也必須是高效的。

  • 該框架允許不同類型的集合,以類似的方式工作,具有高度的互操作性。

  • 對一個集合的擴展和適應必須是簡單的。

為此,整個集合框架就圍繞一組標準接口而設計。你可以直接使用這些接口的標準實現(xiàn),諸如: LinkedList, HashSet, 和 TreeSet等,除此之外你也可以通過這些接口實現(xiàn)自己的集合。

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

  • 接口:是代表集合的抽象數(shù)據(jù)類型。接口允許集合獨立操縱其代表的細節(jié)。在面向對象的語言,接口通常形成一個層次。

  • 實現(xiàn)(類):是集合接口的具體實現(xiàn)。從本質上講,它們是可重復使用的數(shù)據(jù)結構。

  • 算法:是實現(xiàn)集合接口的對象里的方法執(zhí)行的一些有用的計算,例如:搜索和排序。這些算法被稱為多態(tài),那是因為相同的方法可以在相似的接口上有著不同的實現(xiàn)。

除了集合,該框架也定義了幾個Map接口和類。Map里存儲的是鍵/值對。盡管Map不是collections,但是它們完全整合在集合中。


集合接口

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

序號接口描述
1Collection 接口
允許你使用一組對象,是Collection層次結構的根接口。
2List 接口
繼承于Collection和一個 List實例存儲一個有序集合的元素。
3Set
繼承于 Collection,是一個不包含重復元素的集合。
4SortedSet
繼承于Set保存有序的集合。
5Map
將唯一的鍵映射到值。
6Map.Entry
描述在一個Map中的一個元素(鍵/值對)。是一個Map的內部類。
7SortedMap
繼承于Map,使Key保持在升序排列。
8Enumeration
這是一個傳統(tǒng)的接口和定義的方法,通過它可以枚舉(一次獲得一個)對象集合中的元素。這個傳統(tǒng)接口已被迭代器取代。

集合類

Java提供了一套實現(xiàn)了Collection接口的標準集合類。其中一些是具體類,這些類可以直接拿來使用,而另外一些是抽象類,提供了接口的部分實現(xiàn)。

標準集合類匯總于下表:

序號類描述
1AbstractCollection 
實現(xiàn)了大部分的集合接口。
2AbstractList 
繼承于AbstractCollection 并且實現(xiàn)了大部分List接口。
3AbstractSequentialList 
繼承于 AbstractList ,提供了對數(shù)據(jù)元素的鏈式訪問而不是隨機訪問。
4LinkedList
繼承于 AbstractSequentialList,實現(xiàn)了一個鏈表。
5ArrayList
通過繼承AbstractList,實現(xiàn)動態(tài)數(shù)組。
6AbstractSet 
繼承于AbstractCollection 并且實現(xiàn)了大部分Set接口。
7HashSet
繼承了AbstractSet,并且使用一個哈希表。
8LinkedHashSet
具有可預知迭代順序的 Set 接口的哈希表和鏈接列表實現(xiàn)。
9TreeSet
繼承于AbstractSet,使用元素的自然順序對元素進行排序.
10AbstractMap 
實現(xiàn)了大部分的Map接口。
11HashMap
HashMap 是一個散列表,它存儲的內容是鍵值對(key-value)映射。
HashMap 繼承于AbstractMap,實現(xiàn)了Map、Cloneable、java.io.Serializable接口。
12TreeMap
繼承了AbstractMap,并且使用一顆樹。
13WeakHashMap
繼承AbstractMap類,使用弱密鑰的哈希表。
14LinkedHashMap
繼承于HashMap,使用元素的自然順序對元素進行排序.
15IdentityHashMap
繼承AbstractMap類,比較文檔時使用引用相等。

在前面的教程中已經討論通過java.util包中定義的類,如下所示:

序號類描述
1Vector
Vector類實現(xiàn)了一個動態(tài)數(shù)組。和ArrayList和相似,但是兩者是不同的。
2Stack
棧是Vector的一個子類,它實現(xiàn)了一個標準的后進先出的棧。
3Dictionary
Dictionary 類是一個抽象類,用來存儲鍵/值對,作用和Map類相似。
4Hashtable
Hashtable是原始的java.util的一部分, 是一個Dictionary具體的實現(xiàn) 。
5Properties
Properties 繼承于 Hashtable.表示一個持久的屬性集.屬性列表中每個鍵及其對應值都是一個字符串。
6BitSet
一個Bitset類創(chuàng)建一種特殊類型的數(shù)組來保存位值。BitSet中數(shù)組大小會隨需要增加。

一個Bitset類創(chuàng)建一種特殊類型的數(shù)組來保存位值。BitSet中數(shù)組大小會隨需要增加。


集合算法

集合框架定義了幾種算法,可用于集合和映射。這些算法被定義為集合類的靜態(tài)方法。

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

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


序號 算法描述
1 Collection Algorithms
這里是一個列表中的所有算法實現(xiàn)。

如何使用迭代器

通常情況下,你會希望遍歷一個集合中的元素。例如,顯示集合中的每個元素。

做到這一點最簡單的方法是采用一個迭代器,它是一個對象,實現(xiàn)了Iterator 接口或ListIterator接口。

迭代器,使你能夠通過循環(huán)來得到或刪除集合的元素。ListIterator繼承了Iterator,以允許雙向遍歷列表和修改元素。

這里通過實例列出Iterator和listIterator接口提供的所有方法。<table class="reference>
序號 迭代器方法描述
1 使用 Java Iterator

如何使用比較器

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

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

序號 比較器方法描述
1 使用 Java Comparator
這里通過實例列出Comparator接口提供的所有方法

總結

Java集合框架為程序員提供了預先包裝的數(shù)據(jù)結構和算法來操縱他們。

集合是一個對象,可容納其他對象的引用。集合接口聲明對每一種類型的集合可以執(zhí)行的操作。

集合框架的類和接口均在java.util包中。