Java基礎知識拾遺(三)
集合框架
SortedSet接口,聲明了以升序進行排序的行為。
Queue接口,聲明了隊列行為,隊列通常是先進先出的列表
Deque接口,擴展了Queue接口,聲明了雙端隊列的行為。雙端隊列可以像標準隊列那樣先進先出,也可以像堆棧那樣後進先出。
LinkedHashSet,維護組中條目的一個鏈表,鏈表中條目順序也就是插入他們的順序,這使得可以按照插入順序叠代集合。
EnumSet,專門用於枚舉類型的元素。
集合叠代器Spliterator,用於循環遍歷元素序列,他支持並行叠代,即使用不到並行編程,也可以用。它講hasNext()和next操作合並到了一個方法中,從而提高了效率。
RandomAccess接口,通過實現這個接口,可表明集合支持高效地隨機訪問其中的元素。
SortedMap接口,擴展了Map接口,確保條目以鍵的升序保存。
NavigableMap接口,擴展了SortedMap,支持基於最接近匹配原則的條目檢索行為,即支持檢索與給定的一個或多個鍵最匹配的條目。
TreeMap,該類用於創建存儲在樹結構中的映射,TreeMap提供了有序存儲鍵/值對的高效手段,並支持快速檢索。樹映射確保元素以鍵的升序存儲。
常用工具類
StringTokenizer類,實現了Enumeration接口。解析就是將字符串分隔成一系列獨立的部分,又稱為標記,它們是可以表達語義含義的特定序列。它提供了解析過程的第一步,通常稱為字符解析器或
掃描器。所以,給定輸入字符串,就可以使用StringTokenizer枚舉字符串中包含的每個標記。為了使用StringTokenizer,指定一個輸入字符串和一個包含定界符的字符串。定界符
是用來分割標記的字符。定界符中的每個字符都被都被認為是有效的定界符,例如“,;:”將逗號,分號,和冒號設置為定界符。默認的定界符組由空白字符組成:空格,制表符
換頁符,換行以及回車符。
BitSet類,創建特殊類型的數組,這類數組的元素是布爾形式的位值。這類數組可以根據需要增加大小,這使得BitSet與位向量類似。
Optional、OptionalDouble、OptionalInt和OptionalLong
Class Optional<T> T指定了存儲的值的類型。Optional實例既可以包含為T值,也可以為空
Optional的基礎是isPresent()和get()方法。isPresent()方法可判斷是否存在值。存在返回true,否則false。get()方法取得Optional中的值。如果不包含值則拋出異常。orElse()方法將
返回值,否則返回一個默認值。
Optional.empty()
Optional.of("ABCDEFG")
OptionalDouble、OptionalInt和OptionalLong類的工作方式與Optional類十分類似,只不過他們是專門為操作double、int和long類型設計的。因此,他們分別定義了getAsDouble()、
getAsInt()、getAsLong()方法為而不恃get()方法。
Date類,封裝了當前日期和時間。不允許獲取日期或時間的單個組成部分。只能以毫秒數為單位獲取日期和時間。
Calendar抽象類提供了一套方法,允許將毫秒數形式的時間轉換成大量有用的時間組成部分。
GregorianCalendar類,是Calendar類的具體實現,實現了熟悉的Gregorian日歷。這個對象使用默認地區和時區進行初始化。GregorianCalendar定義了兩個域變量:AD和BC.他們
表示格林尼治日歷定義的兩個紀元。
TimeZone抽象類,可以處理與格林尼治標準時間(GMT)——也就是世界時間(UTC)之間的時差。
SimpleTimeZone類,是TimeZone的一個便利子類。它實現了TimeZone的抽象方法,並且可以操作GreGorian日歷的時區,此外還能夠計算夏令營。
Locale類,使用Locale類實例化的對象,用於描述地理或文化上的區域。使其可以編寫能在不用國際環境中雲運行的java程序。例如在不同的區域,用於顯示日期、時間、數字
的格式是不同的。
Locale類的構造函數如下:
Locale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)
這些構造函數用來構建表示特定語言以及特定國家的Locale對象。這些值必須包含標準語言和國家代碼,輔助信息通過variant提供。
static void setDefault(Locale localeObj)
這個方法將JVM使用的默認地區設置為localeObj.
Calendar和GregorianCalendar是以地區敏感方式使用的類的例子。
Random類,是偽隨機數生成器,之所以成為偽隨機數,是因為他們只是簡單的均勻分布序列。
Random() 使用相對唯一的種子
Random(long seed) 手動指定種子
如果使用種子初始化Random對象,就為偽隨機序列定義了開始點。如果使用相同的種子初始化另外一個Ramdom對象,就會得到相同的隨機序列。如果希望
生成不同的序列,需要指定不同的種子。實現這種效果的一種方式是使用當前時間作為Random對象的種子。這種方式減少了得到重復序列的可能。
Currency類,封裝了有關貨幣的信息,Currency c = Currency.getInstance(Locale.US);
Formatter類,Java能對創建格式化輸出進行支持的核心在於Formatter類。該類提供了格式轉換功能,從而可以采用適合的各種方式顯示數字,字符串以及時間和
日期。內容。可以讓Formatter自動提供這個緩沖區,也可以在創建Formatter對象時顯示提供。讓Formatter將自己的緩沖區輸出到文件中也是有可能的。Formatter
對象在使用完之後應當關閉,從而釋放Formatter對象占用的所有資源。
Formatter參數中需包含個會說明符,定義顯示後續參數的方法。格式說明符最以%開頭。
Formatter fmt = new Formatter();
fmt.format("Formatting %s is easy %d %f", "with Java", 10, 98.6);
fmt.toString();
指定寬度:%和格式轉換代碼之間的整數作為最小字段寬度說明符,這會使用空格填充輸出,確保輸出達到特定的最小長度。即使字符串或數字長度小於寬度。
也仍然會完整輸出。默認使用空格進行填充。如果希望使用0進行填充,可以在字段寬度說明符前放一個0。%05d使用0填充總長度小於5的數字,使數字長度為5。
指定精度:精度說明符可以應用於%f、%e、%g以及%s格式說明符。精度說明符位於最小字段寬度說明符之後。由一個小數點以及緊跟其後的整數構成。精度
說明符的確切含義取決於所應用數據的類型。%10.4f顯示的數字至少有10個字符寬,並且帶有4位小數。
對齊輸出,默認情況所有輸出是右對齊,如果緊隨%之後放置一個減號,這樣可以強制輸出左對齊。%-10.2f:左對齊有兩位小數點。
+,在整數前面顯示“+”符號,%+d
,當顯示打的數字時,添加組分隔符通常是很有用的。fmt.format(",.2f", 4356783497.34) : 4,356,783,497.34
"#" 應用於%o %x %e和%f格式說明符。確保具有小數點,及時沒有小數位。
參數索引,格式說明符和參數按順序從左向右進行匹配,使用參數索引,可以顯示地控制哪個參數與哪個格式說明符相匹配。
fmt.format("%3$d %1$d %2$d", 10, 20,30) 30 10 20
Scanner類,與Formatter類相反,Scanner類讀取格式化的輸入,並將輸入轉換成相應的二進制。可以用於從控制臺,文件,字符串或者任意實現了Readable或
ReadableByteChanner接口的資源讀取內容。
一旦創建Scanner對象,使用它來讀取格式化輸入就是很簡單的事情了。Scanner對象從位於低位的,創建這種對象時指定的源讀取標記。標記與Scanner有關,
是輸入的一部分,根據一系列定界符確定標記的開始和結束為止。默認情況下定界符是空格。Scanner類的nextX方法進行讀取,如果nextX無法找到正在查找的 類型拋出異常。
當關閉Scanner對象時,與之關聯Readable也會被關閉。
ResourceBundle、ListResourceBundle和PropertyResourceBundle類,幫助國際化程序的類。
ResourceBundle該類定義的方法用於管理地區敏感資源的集合,例如用於顯示程序中用戶界面元素的字符串。可以定義兩套或更多套用於支持各種語言的翻譯過字符串。
比如英語、德語等,每套翻譯過的字符串都在自己的資源保中。然後可以加載適用於當前地區的資源包,並使用其中的字符串構造程序的用戶界面。
資源包通過他們的家族名稱(“基名”)進行標識。對於家族名稱,可以添加兩字符的小寫語言代碼,語言代碼用於指定語言。對於這種情況,如果需要的地區與語言代碼
匹配,就使用該版本的資源包。 如 家族名SampleRB_de稱為德語版,所以,如果地區是Locale。GERMAN就會使用SampleRB_de。
ResourceBundle有兩個子類,第一個是PropertyResourceBundle,該類使用屬性文件管理資源,沒有添加自己的方法。第二個是抽象類ListResourceBundle,該類使用
鍵/值對數組管理資源。
Java基礎知識拾遺(三)