1. 程式人生 > >Java基礎知識拾遺(三)

Java基礎知識拾遺(三)

日歷 映射 abcde spl 了解 找到 元素 next() 聲明

集合框架

  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基礎知識拾遺(三)