1、Collecti 專門用來操做集合的工具類,沒有構造函數,全靜態方法。java
經常使用方法:
static <T extends Comparable<? super T>> void sort(List<T> list) :
對一個元素自帶比較方法的List集合排序。
static <T> void sort(List<T> list, Comparator<? super T> c) :
對一個元素不帶比較方法的List集合排序(本身創建比較器。)
static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) :
對一個有序的List集合進行二分查找。
static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c) :
對一個元素無排序方法進行二分查找。
static <T> void fill(List<? super T> list, T obj) :
使用指定元素取代集合中的全部元素。
static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) :
使用新值來替換列表中的全部舊值。
static void reverse(List<?> list) :
反轉指定集合中的全部元素。
static <T> Comparator<T> reverseOrder() :
返回一個比較器,它強行逆轉實現了 Comparable 接口的對象 collection 的天然順序。
static <T> Comparator<T> reverseOrder(Comparator<T> cmp) :
返回一個比較器,它強行逆轉指定比較器的順序。
這兩個方法在集合創建的實參列表中傳入,或者在sort語句中傳入(由於返回的爲比較器)。
static void swap(List<?> list, int i, int j) :
在指定列表的指定位置處交換元素。
static <T> List<T> synchronizedList(List<T> list) :
返回指定列表支持的同步(線程安全的)列表。(其餘集合同有相應方式)數組
static void shuffle(List<?> list) : 使用默認隨機源對指定列表進行置換。
static void shuffle(List<?> list, Random rnd) : 使用指定的隨機源對指定列表進行置換。
2、Arrays
用於操做數組的工具類,沒有構造函數,全靜態方法。
經常使用方法:
static boolean deepEquals(Object[] a1, Object[] a2) :若是兩個指定數組彼此是深層相等 的,則返回 true。
數組變集合:
static <T> List<T> asList(T... a) : 返回一個受指定數組支持的固定大小的列表。
好處:可使用集合中的思想和方法類操做數組中的元素。
注意:一、返回的List集合中不能使用增刪方法。由於數組長度不能改變,不然會發生異常。
二、若是數組中的元素都是對象,轉成集合時,會將數組中的元素直接轉變成集合中的元素。
若是數組中的元素都是基本數據類型,那麼就將數組自己當成元素存入集合。
三、對於多維數組,<T>應當爲低一級別的數組,傳入集合的爲數組的哈希碼。安全
集合變數組:
使用的是Collection接口中的 :dom
一、 Object[] toArray() 方法。
二、 <T> T[] toArray(T[] a) 方法。函數
對於方法一,返回的直接是一個Object類型的數組,其長度爲集合的工具
對於方法二,若是做爲實參傳入的數組長度小於集合的size,那麼方法內部會自動建立一個新數組,長的爲size。
若是傳入的數組長度大於集合的size,那麼方法內部不會建立新的數組,而是使用傳入的數組,不滿位爲null。
因此最好建立一個長度等於集合size的數組做爲參數傳入。
做用: 爲了限定對元素的操做(元素個數不能再改變,即不能進行增刪)。線程
3、強循環。
一、Iterable接口,實現該接口,將得到構建迭代器的方法(如:Collection)。對象
同時,實現這個接口還容許對象成爲 "foreach" 語句的目標。(成爲強循環語句的目標)
二、強循環語句格式: for(數據類型 變量名 :被遍歷的集合(Cellection)或者數組){ }
如:for(String s : new ArrayList())
{
(s 指向每次被遍歷到的元素)
}
優勢: 對集合數組進行遍歷的時候,簡化了書寫。
缺點: 有較大的侷限性:只能獲取集合中的元素,不能對集合進行操做。
而迭代器除了能獲取元素之外,還能remove集合中的元素(ListIterator甚至能添加集合中的元素)
而傳統for語句更是功能強大, 除了特定狀況建議使用傳統for語句。
4、可變參數。排序
idk1.5 出現的新特性。
使用前提條件: 一、在定義形參列表的時候,可能會傳入多個相同類型的參數(非硬性條件)
二、每一個參數列表只能定義一個可變參數,而且要求放於參數列表的最後面。(硬性要求)
格式:
methed(參數類型1,參數類型2,..., 可變參數的參數類型...變量名)
如: method(String s, int i, Demo...d) :傳一個字符串、一個整形、一個Demo類型的可變參數。
實現解釋: 在調用方法傳遞參數時,到了Demo類型時,能夠傳入 多個 、一個或者 0 個參數。
底層會隱式的將對應參數封裝成對應類型的數組,傳入同類型參數個數就是數組長度。
以後在方法中遍歷取出元素操做便可。
如: 咱們調用上述例子: method("sd",8,demo1,demo2,demo3);
實際接收參數爲:s= "sd"; i = 8; Demo [] d = {demo1,demo2,demo3}接口
5、StaticImport 靜態導入。
jdk1.5 出現的新特性。 爲了可以使用其餘的包中的類,咱們能夠導入這個類: 如: import java.util.*; :導入了java.util包中的全部類。 藉助相同的原理,咱們要使用其餘的類中的靜態成員時,能夠靜態導入這個類中的靜態成員。 如: import static java.util.Collections.* ; :導入了Collections中的全部靜態成員。 import static java.util.Arrays.*; :導入了Arrays中全部的靜態成員。 import static Java.lang.System.*: : 導入了System中的全部靜態成員。 好處: 再使用上述類中的導入後,使用這些類的靜態成員時能夠不用寫類名 如: Collections.sort(List<T> list) 能夠寫爲: sort(List<T> list); Arrays.deepEequals(O[] o1, O[] o2); 能夠寫爲 : deepEquals(O[] o1, O[] o2); System.out.println(); 能夠寫爲: out.println(); 注意: 前面學過,在包導入中,若是兩個包中有相同名字的類,實例化該類的時候,必須指明包名。 同理,在類的靜態導入以後,若是方法或成員重名時,應當指明方法所屬的對象或者類名, 不然,系統按照就近原則查找。