4.5Utilities工具類
4.5.1 Collections
Collections類靜態方法
1、publicstatic <T extends
Comparable<? super T>> void
sort(List<T> list)
T extends Comparable表示T類型是可以排序的類型。
2、public static <T> void
sort(List<T> list,Comparator<?super
T> c)
T類型可以是不排序的類。
3、public static <T extends
Comparable<?super T>> T
max(Collection<?extends T> coll)
4、publicstatic <T>
Comparator<T>
reverseOrder():反轉
static <T> Comparator<T> reverseOrder() :返回一個比較子,它強行逆轉實現了 Comparable 介面的對象 collection 的自然順序
static <T> Comparator<T>reverseOrder(Comparator<T> cmp) :返回一個比較子,它強行逆轉指定比較子的順序。
5、提供安全執行緒
集合許多介面、實作類別有一個共同的缺點,那就是線程不安全,被多線程操作時,容易出現問題,雖然可以自己加鎖但是麻煩。Collections提供特牛的方法,就是給它一個不同步的集合,它返回一個同步的安全的集合。
static <T> Collection<T>synchronizedCollection(Collection<T> c) :返回指定collection 支援的同步(安全執行緒的)collection。
static <T> List<T> synchronizedList(List<T> list) :返回指定列表支援的同步(安全執行緒的)列表。
static <K,V> Map<K,V>synchronizedMap(Map<K,V> m) :返回由指定映射支援的同步(安全執行緒的)映射。 static<T> Set<T> synchronizedSet(Set<T> s) :返回指定 set 支援的同步(安全執行緒的)set。
static <K,V> SortedMap<K,V>synchronizedSortedMap(SortedMap<K,V> m):返回指定有序映射支援的同步(安全執行緒的)有序映射。
static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s):返回指定有序 set 支援的同步(安全執行緒的)有序 set。
4.5.2 Arrays
1、Arrays用於運算元組的工具類。
2、數組轉成集合
A、public static <T>
List<T>
asList(T... a):a為數組,傳進來a數組,asList方法將數組轉成list集合。
B、將數組轉成List集合的好處:可以使用集合的思想和方法來運算元組中的元素。
C、將數組轉成List集合的弊端:不可以使用集合的增、刪方法,因為數組的長度是固定的,但是例如contains\get\indexof\subList方法,如果使用了增刪方法會出現UnsupportedOperationException異常。
D、注意點:如果數組中的元素都是對象,那麼變成集合時,數組中的元素就直接轉成集合中的元素。如果數組中的元素都是基礎資料型別 (Elementary Data Type),那麼會將該數組作為集合中的元素存在。所以Integer和int[]是有區別的。
3、集合轉成數組:此功能不是工具類中的是Collection介面中的toArray方法。
4.6JDK1.5新特性
4.6.1進階for迴圈
1、JDK1.5新特性,代替迭代器使用時的不爽,簡化了書寫。底層原理還是迭代器,凡是支撐迭代器的都支援進階for迴圈。
進階for迴圈只支援數組和集合。集合中還要注意Map集合需要先轉化成Set集合,再用進階for。
2、格式
for(資料類型 變數名:被遍曆的集合(Collection)或者數組){……}
3、進階for迴圈弊端:對集合進行遍曆,只能擷取元素,但是不能對集合進行操作。
迭代器除了遍曆,還可以進行remove集合中的元素動作;迭代器如果是用ListIterator還可以對集合進行增刪改查動作。
4、傳統和進階for迴圈的區別
進階for有一個局限性,必須有遍曆的目標(數組或者集合)。
建議在遍曆數組的時候,還是使用傳統for,因為可以使用角標(比如列印100次hello world)。
4.6.2可變參數
1、JDK1.5出現的新特性。可變參數其實就是數組的簡寫形式。只要將要操作的元素作為參數傳遞即可,隱式將參數封裝成數組。
2、格式
方法的可變參數
格式:
public static void show(String str,int... arr)
{
……
}
注意:可變參數一定要放在參數列表的最後面
3、可變參數注意點:可變參數一定要定義在參數最後面。
4.6.3靜態匯入
1、JDK1.5出現的新特性。
2、格式:import static 包.*;
import匯入的是包中的類;
import static匯入的是包中類的成員變數(屬性、方法)。
3、靜態匯入注意點
當類名重名時,需要指定具體的包名;
當方法名重名時,需要指定具體所屬的對象或者類。