Java基礎-->集合-工具類

第一節  Util 工具類


工具類的Collections和Arrays中的方法全是靜態的,下面主要總結幾個比較重要的方法。
一、Collections工具類:
在Collections工具類中很多方法是用於對List集合進行操作的,如比較,查找,隨機排序等等
1、集合的各種方法:

1)查找:

      T max(Collection<? extends T> coll)    --->    根據集合的自然順序,獲取coll集合中的最大元素

      T max(Collection<? extends T> coll,Comparator<? super T> comp)    --->   根據指定比較器comp的順序,獲取coll集合中的最大元素

      int binarySearch(Lsit<? extends Comparable<? super T>> list,Tkey)    --->   二分法搜索list集合中的指定對象

2)替換:

      void fill(List<? super T> list, T obj)        --->   將list集合中的全部元素替換成指定對象obj

      boolean replaceAll(List<T> lsit,T oldVal,T newVal)     --->   使用newVal替換list集合中的oldVal值

3)排序:

      void shuffle(List<?> list)     --->   使用默認隨機源對list集合中的元素進行隨機排序

      void sort(Lsit<T> list)          --->   根據自然順序對list集合中的元素進行排序

      void sort(List<T> lsit,Comparator<? super T> c)     --->   根據指定比較器c的排序方式對list集合進行排序

4)反轉

      reverse(List<?> list)     --->   反轉list集合中元素的順序

      Comparator reverseOrder()     --->   返回一個比較器,強行逆轉了實現Comparable接口的對象的自然順序

      Comparator reverseOrder(Comparator<T> cmp)     --->   返回一個比較器,強行逆轉了指定比較器的順序

示例:

創建部分替換方法:


二、Arrays工具類:

1、Lsit<T> asList(T... a)    --->    將數組轉換爲集合

注意:將數組轉換成集合,不可使用集合的增刪方法,因爲數組的長度是固定的,如果進行增刪操作,則會產生UnsupportedOperationException的編譯異常。

a.如果數組中的元素都是對象,則變成集合時,數組中的元素就直接轉爲集合中的元素

b.如果數組中的元素都是基本數據類型,那麼會將該數組作爲集合中的元素存在

2、binarySearch():查找方法,fill():替換方法,sort():排序方法等

特點:可對數組元素進行相應操作,可以接受除boolean之外的其他各種基本數據類型及有序的引用類型數組的參數,且還可以對指定元素的範圍,並可根據指定比較器進行相應的操作

如:sort(T[] a,Comparator<? super T> c) 

        fill(int[]a,int from,int to)等

3、String toString() 可以接收各種數組類型參數,並返回指定數組內容的字符串表現形式

4、集合轉爲數組

      void toString(String[] s)  --->  將集合轉爲指定數組s,並可通過Arrays.toString(s)獲取數組s中的元素

1)指定類型的數組定義的長度:

a.當指定類型的數組長度小於了集合的size,那麼該方法內部會創建一個新的數組,長度爲集合的size

b.當指定類型的數組長度大於了集合的size,就不會創建數組,而是使用傳遞進來的數組,並且多出的元素的值爲null

2)爲何將集合轉爲數組:爲了限定對集合中元素的操作,如增刪,因爲想對創建的集合不做增刪方面的操作。


示例:


第二節  小知識點

一、增強for循環

1、格式:

      for(數據類型 變量名 : 被遍歷的集合(Collection)或數組){執行語句}

2、說明:

1)對集合進行遍歷,只能獲取集合的元素,但是不能對集合進行操作。

2)迭代器除了遍歷外,還可進行remove集合中元素的操作,如果使用ListIterator,還可在遍歷過程中,對集合進行增刪改查的操作。

3、傳統for循環和增強for循環區別:

      增強for循環有侷限性。必須有被遍歷的目標;而傳統for循環有索引。所以建議在遍歷數組時,使用傳統for循環。


二、可變參數:

如果在參數列表中傳入多個參數,個數不確定,每次都要複寫該方法,可變參數的出現就可以省去複寫的麻煩,而直接對數組進行操作

注意:可變參數一定要定義在參數列表的後面。

示例:


三、靜態導入:

        靜態導入,是將類中的所有靜態成員導入進來,但需要注意的是,當導入的兩個類中有同名成員時,需要在成員前加上相應的類名。

        當類名重名時,需要制定具體的包名;當方法名重名時,制定具體所屬的對象或類。

1、import static java.util.Arrays.*;       ---> 寫入的是Arrays類中的所有靜態成員。

2、import static java.lang.System.*;  ---> 導入了System類中的所有靜態成員




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章