J2SE综合对java util的总结 一
J2SE綜合對java util的總結(jié) 一
java.util包中包含了一些在Java 2中新增加的最令人興奮的增強功能:類集。一個類集(collection)是一組對象。類集的增加使得許多java.util中的成員在結(jié)構(gòu)和體系結(jié)構(gòu)上發(fā)生根本的改變。它也擴展了包可以被應(yīng)用的任務(wù)范圍。類集是被所有Java程序員緊密關(guān)注的最新型的技術(shù)。
除了類集,java.util還包含了支持范圍廣泛的函數(shù)的各種各樣的類和接口。這些類和接口被核心的Java包廣泛使用,同時當(dāng)然也可以被你編寫的程序所使用。對它們的應(yīng)用包括產(chǎn)生偽隨機數(shù),對日期和時間的操作,觀測事件,對位集的操作以及標(biāo)記字符串。由于java.util具有許多特性,因此它是Java中最被廣泛使用的一個包。
java.util中包含的類如下。
在Java 2中新增加的一些也被列出:
AbstractCollection (Java 2) EventObject Random
AbstractList (Java 2) GregorianCalendar ResourceBundle
AbstractMap (Java 2) HashMap (Java 2) SimpleTimeZone
AbstractSequentialList (Java 2) HashSet (Java 2) Stack
AbstractSet (Java 2) Hashtable StringTokenizer
ArrayList (Java 2) LinkedList (Java 2) Timer (Java 2, v1.3)
Arrays (Java 2) ListResourceBundle TimerTask (Java 2, v1.3)
BitSet Locale TimeZone
Calendar Observable TreeMap (Java 2)
Collections (Java 2) Properties TreeSet (Java 2)
Date PropertyPermission (Java 2) Vector
Dictionary PropertyResourceBundle WeakHashMap (Java 2)
java.util定義了如下的接口。注意其中大多數(shù)是在Java 2中新增加的。
Collection (Java 2) List (Java 2) Observer
Comparator (Java 2) ListIterator (Java 2) Set (Java 2)
Enumeration Map (Java 2) SortedMap (Java 2)
EventListener Map.Entry (Java 2) SortedSet (Java 2)
Iterator (Java 2)
ResourceBundle類,ListResourceBundle類和PropertyResourceBundle類幫助具有特定地區(qū)資源的大型程序國際化。關(guān)于這些類的討論,在這里從略。授權(quán)對系統(tǒng)屬性進行讀/寫的PropertyPermission類也超過了本書的討論范圍。EventObject和EventListener類將在第20章討論。下面將對剩下的類和接口做詳細的討論。
15.1 類集概述
Java的類集(Collection)框架使你的程序處理對象組的方法標(biāo)準化。在Java 2出現(xiàn)之前,Java提供了一些專門的類如Dictionary,Vector,Stack和Properties去存儲和操作對象組。盡管這些類非常有用,它們卻缺少一個集中,統(tǒng)一的主題。因此例如說使用Vector的方法就會與使用Properties的方法不同。以前的專門的方法也沒有被設(shè)計成易于擴展和能適應(yīng)新的環(huán)境的形式。而類集解決了這些(以及其他的一些)問題。
類集框架被設(shè)計用于適應(yīng)幾個目的。
首先,這種框架是高性能的。對基本類集(動態(tài)數(shù)組,鏈接表,樹和散列表)的實現(xiàn)是高效率的。一般很少需要人工去對這些“數(shù)據(jù)引擎”編寫代碼(如果有的話)。第二點,框架必須允許不同類型的類集以相同的方式和高度互操作方式工作。第三點,類集必須是容易擴展和/或修改的。為了實現(xiàn)這一目標(biāo),類集框架被設(shè)計成包含一組標(biāo)準的接口。對這些接口,提供了幾個標(biāo)準的實現(xiàn)工具(例如LinkedList,HashSet和TreeSet),通常就是這樣使用的。如果你愿意的話,也可以實現(xiàn)你自己的類集。
為了方便起見,創(chuàng)建用于各種特殊目的的實現(xiàn)工具。一部分工具可以使你自己的類集實現(xiàn)更加容易。最后,增加了允許將標(biāo)準數(shù)組融合到類集框架中的機制。
算法(Algorithms)是類集機制的另一個重要部分。算法操作類集,它在Collections類中被定義為靜態(tài)方法。因此它們可以被所有的類集所利用。每一個類集類不必實現(xiàn)它自己的方案,算法提供了一個處理類集的標(biāo)準方法。
由類集框架創(chuàng)建的另一項是Iterator接口。一個迭代程序(iterator)提供了一個多用途的,標(biāo)準化的方法,用于每次訪問類集的一個元素。因此迭代程序提供了一種枚舉類集內(nèi)容(enumerating the contents of a collection)的方法。因為每一個類集都實現(xiàn)Iterator,所以通過由Iterator定義的方法,任一類集類的元素都能被訪問到。因此,稍作修改,循環(huán)通過集合的程序代碼也可以被用來循環(huán)通過列表。
除了類集之外,框架定義了幾個映射接口和類。映射(Maps)存儲鍵/值對。盡管映射在對項的正確使用上不是“類集”,但它們完全用類集集成。在類集框架的語言中,可以獲得映射的類集“視圖”(collection-view)。這個“視圖”包含了從存儲在類集中的映射得到的元素。因此,如果選擇了一個映射,就可以將其當(dāng)做一個類集來處理。
對于由java.util定義的原始類,類集機制被更新以便它們也能夠集成到新的系統(tǒng)里。所以理解下面的說法是很重要的:盡管類集的增加改變了許多原始工具類的結(jié)構(gòu),但它卻不會導(dǎo)致被拋棄。類集僅僅是提供了處理事情的一個更好的方法。
最后的一點:如果你對C++比較熟悉的話,那么你可以發(fā)現(xiàn)Java的類集技術(shù)與在C++中定義的標(biāo)準模板庫(STL)相似。在C++中叫做容器(container),而在Java中叫做類集。
15.2 類集接口
類集框架定義了幾個接口。本節(jié)對每一個接口都進行了概述。首先討論類集接口是因為它們決定了collection類的基本特性。不同的是,具體類僅僅是提供了標(biāo)準接口的不同實現(xiàn)。支持類集的接口總結(jié)在如下的表中:
接口描述
Collection 能使你操作對象組,它位于類集層次結(jié)構(gòu)的頂層
List 擴展Collection去處理序列(對象的列表)
Set 擴展Collection去處理集合,集合必須包含唯一元素
SortedSet 擴展Set去處理排序集合
除了類集接口之外,類集也使用Comparator,Iterator和ListIterator接口。關(guān)于這些接口將在本章后面做更深入的描述。簡單地說,Comparator接口定義了兩個對象如何比較;
Iterator和ListIterator接口枚舉類集中的對象。
為了在它們的使用中提供最大的靈活性,類集接口允許對一些方法進行選擇。可選擇的方法使得使用者可以更改類集的內(nèi)容。支持這些方法的類集被稱為可修改的(modifiable)。不允許修改其內(nèi)容的類集被稱為不可修改的(unmodifiable)。如果對一個不可修改的類集使用這些方法,將引發(fā)一個UnsupportedOperationException異常。所有內(nèi)置的類集都是可修改的。
下面討論類集接口。
15.2.1 類集接口
Collection接口是構(gòu)造類集框架的基礎(chǔ)。它聲明所有類集都將擁有的核心方法。這些方法被總結(jié)在表15-1中。因為所有類集實現(xiàn)Collection,所以熟悉它的方法對于清楚地理解框架是必要的。其中幾種方法可能會引發(fā)一個UnsupportedOperationException異常。正如上面解釋的那樣,這些發(fā)生在當(dāng)類集不能被修改時。當(dāng)一個對象與另一個對象不兼容,例如當(dāng)企圖增加一個不兼容的對象到一個類集中時。將產(chǎn)生一個ClassCastException異常。表15-1 由Collection 定義的方法
方法描述
boolean add(Object obj) 將obj加入到調(diào)用類集中。如果obj被加入到類集中了,則返
回true;如果obj已經(jīng)是類集中的一個成員或類集不能被復(fù)制時,則返回falseboolean addAll(Collection c) 將c中的所有元素都加入到調(diào)用類集中,如果操作成功(也就是說元素被加入了),則返回true;否則返回falsevoid clear( ) 從調(diào)用類集中刪除所有元素boolean contains(Object obj) 如果obj是調(diào)用類集的一個元素,則返回true,否則,返回falseboolean containsAll(Collection c) 如果調(diào)用類集包含了c中的所有元素,則返回true;否則,返回falseboolean equals(Object obj) 如果調(diào)用類集與obj相等,則返回true;否則返回falseint hashCode( ) 返回調(diào)用類集的散列碼boolean isEmpty( ) 如果調(diào)用類集是空的,則返回true;否則返回falseIterator iterator( ) 返回調(diào)用類集的迭代程序Boolean remove(Object obj) 從調(diào)用類集中刪除obj的一個實例。如果這個元素被刪除了,則返回true;否則返回falseBoolean removeAll(Collection c) 從調(diào)用類集中刪除c的所有元素。如果類集被改變了(也就是說元素被刪除了),則返回true;否則返回falseBoolean retainAll(Collection c) 刪除調(diào)用類集中除了包含在c中的元素之外的全部元素。如果類集被改變了(也就是說元素被刪除了),則返回true,否則返回falseint size( ) 返回調(diào)用類集中元素的個數(shù)Object[ ] toArray( ) 返回一個數(shù)組,該數(shù)組包含了所有存儲在調(diào)用類集中的元素。數(shù)組元素是類集元素的拷貝Object[ ] toArray(Object array[ ]) 返回一個數(shù)組,該數(shù)組僅僅包含了那些類型與數(shù)組元素類型匹配的類集元素。數(shù)組元素是類集元素的拷貝。如果array的大小與匹配元素的個數(shù)相等,它們被返回到array.如果array的大小比匹配元素的個數(shù)小,將分配并返回一個所需大小的新數(shù)組,如果array的大小比匹配元素的個數(shù)大,在數(shù)組中,在類集元素之后的單元被置為null.如果任一類集元素的類型都不是array 的子類型, 則引發(fā)一個ArrayStoreException異常
調(diào)用add( )方法可以將對象加入類集。注意add( )帶一個Object類型的參數(shù)。因為Object是所有類的超類,所以任何類型的對象可以被存儲在一個類集中。然而原始類型可能不行。例如,一個類集不能直接存儲類型int,cha參考http://wenku.it168.com/d_000068692.shtml
轉(zhuǎn)載于:https://www.cnblogs.com/Q685656/archive/2013/03/04/2942413.html
總結(jié)
以上是生活随笔為你收集整理的J2SE综合对java util的总结 一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sqlldr 导入乱码,Oracle客户
- 下一篇: hdu 2149 巴什博弈