黑馬程序員_Java_collections and Arrays(工具類)

collections

collections工具類方法

1,static <T extends Comparable<? super T>> void sort(List<T> list):根據元素的天然順序對指定列表按升序進行排序。//對list集合進行排序。java

2,static <T> void sort(List<T> list,Comparator<? super T> c):根據指定比較器產生的順序對指定列表進行排序。//根據指定比較器對list進行排序。數組

3,static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll):根據元素的天然順序,返回給定collection的最大元素。安全

4,static <T> T max(Collection<? extends T> coll,Comparator<? super T> comp):根據指定比較器產生的順序,返回給定collection的最大元素。dom

5,static<T> int binarySearch(List<? extends T> list,T key):使用二分搜索法搜索指定列表,以得到指定對象。(必須是有序的list集合)函數

若包含,則返回搜索鍵的索引,若不包含,則返回(-(插入點)-1)。工具

6,static<T> int binarySearch(List<? extends Comparator<? super T>> list,T key,Comparator<? super T> c):使用二分搜索法搜索指定列表,以得到指定對象。線程

7,static<T>void fill(List<? super T> list,T obj):使用指定元素替換指定列表中的全部元素。對象

8,static<T> boolean replaceAll(List<T>list,T oldVal,T newVal):使用另外一個值替換列表中出現的全部某一指定值。(替換元素)排序

9,static void reverse(List<?> list):反轉指定列表中元素的順序。其實調用的是swap方法。索引

10,static <T> Comparator<T> reverseOrder():返回一個比較器,它強行逆轉實現了Comparator接口的對象collection的天然順序。(做爲參數傳入來初始化該集合對象)

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

12,static void swap(List<?> list,int i,int j):在指定列表的指定位置處交換元素。

13,static void shuffle(List<?> list):使用默認隨機源對指定列表進行置換。//發牌器 。洗牌。轉骰子。

14,static void shuffle(List<?> list,Random rnd):使用指定的隨機源對指定列表進行置換。 

15,static<T> List<T> synchronizedList(List<T> list):返回指定列表支持的同步(線程安全的)列表。

16,static<K,V> Map<K,V> synchronizedMap(Map<K,V> m):返回由指定映射支持的同步(線程安全的)映射。

17,static<T> Set<T> synchronizedSet(Set<T> s):返回指定set支持的同步(線程安全的)set。

 

 Arrays:用於操做數組的工具類。都是靜態方法。

1,static int binarySearch(……):使用二分搜索法來搜索指定key。

2,static xxx[] copyOf(xxx[] original,int newLength):複製數組。

3,static xxx[] copyOfRange(……):講指定數組的指定範圍複製到一個新數組。

4,static boolean equals():比較兩個數組的內容是否相同。

5,static boolean deepEquals(Object a1,Object a2):若是兩個指定數組彼此是深層相等的,則返回true。

6,static void fill(……):替換數組中元素的值。或者替換數組中的指定範圍。

7,static int hashCode(xxx[] a):基於指定數組的內容返回哈希碼值。

8,static void sort(xxx[] a):對指定數組(或指定範圍)按數組升序進行排序。

9,static String toString(xxx[] a):返回指定數組內容的字符串表現形式。

重點:10,static<T> List<T> asList(T... a):返回一個受指定數組支持的固定大小的列表。(將數組變成LIst集合

把數組變成List集合有什麼好處?可使用集合的思想和方法來操做數組中的元素。

注意:

1,將數組變成集合,不可使用集合的增刪方法,由於數組的長度是固定的。可用例:contains,get,indexOf(),subList()。

若是增刪,那麼會發生UnsupportedOperationException

2,若是數組中的元素都是對象。那麼變成集合時,數組中的元素就直接轉成集合中的元素。若是數組中的元素都是基本數據類型,那麼會將該數組做爲集合中的元素存在。

 

 集合轉成數組

Collection接口中的toArray方法。

<T> T[] toArray(T [] a):返回包含此collection中全部元素的數組:返回數組的運行時類型與指定數組的運行時類型相同。

1,指定類型的數組到底要定義多長呢?當指定類型的數組長度小於了集合的size,那麼該方法的內部會建立一個新的數組,長度未集合的size。當指定類型的數組長度大於了集合的size,就不會新建立數組,而是用傳遞進來的數組。因此建立一個剛恰好的數組最優。//例:String[] arr = al.toArray(new String[al.size()]);

2,爲何要將集合變成數組?

爲了限定對元素的操做。防止對方進行增刪操做,不須要進行增刪。 

 

加強for循環(jdk1.5)

高級for循環:格式:

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

其實底層原理仍是迭代器,升級是爲了簡化書寫。

侷限性:只能獲取集合中的元素,而不能作修改。迭代器除了遍歷,還樂意進行remove集合中元素的動做。若是是使用ListIterator,還能夠在遍歷過程當中對集合進行增刪改查的動做。 

 傳統for和高級for有什麼區別呢?

高級for有一個侷限性,必須有被遍歷的目標。建議在遍歷數組的時候,仍是但願用傳統for,由於傳統for能夠定義角標。

 

可變參數

格式:例:show(int... arr)  或   show(String s,int... arr)

出現函數重載時,雖然少定義了多個方法,可是每次都要定義一個數組,做爲實際參數。

可變參數:其實就是上一種,數組參數的簡寫形式。不用每一次東侯手動地創建數組對象。只要將要操做的元素做爲參數傳遞即刻,隱式將這些參數封裝成了數組。

在使用時注意:可變參數必定要定義在參數列表的最後面。

 

staticImport:靜態導入

例:import static java.util.Arrays.*;//導入的是Arrays這個類中的全部靜態成員。

例:import static java.util.System.*;//導入了System類中的全部靜態成員。

當類名重名時,須要指定具體的包名。

當方法重名時,須要指定具有所屬的對象或者類。

 

 

 

 

 

。,。。。。

相關文章
相關標籤/搜索