天天看點

黑馬程式員-day17工具類Collections和Arrays

1.Collections

(1)Collections:集合架構的工具類。裡面定義的都是靜态方法。一些常用基本的方法:

1.排序,例:

Collections.sort(list);

Collections.sort(list,new StrLenComparator());

2.二分查找,例:

Collections.binarySearch(list,"aaaa");

3.取最大值,例:

 Collections.max(list)

4.置換位置,例:

Collections.swap(list,1,2);

Collections.shuffle(list);随機置換,像洗牌,擲篩子。

5反轉

reverseOrder();可傳回指定比較器的逆序,或者自然順序的逆序。

reverse();

6.替換  fill();

(2)Collections和Collection有什麼差別?

Collection是集合架構中的一個頂層接口,它裡面定義了單列集合的共性方法。它有兩個常用的子接口,List:對元素都有定義索引。有序的。可以重複元素。Set:不可以重複元素。無序。

Collections是集合架構中的一個工具類。該類中的方法都是靜态的提供的方法中有可以對list集合進行排序,二分查找等方法。通常常用的集合都是線程不安全的。因為要提高效率。如果多線程操作這些集合時,可以通過該工具類中的同步方法,将線程不安全的集合,轉換成安全的。

2.Arrays

Arrays:用于操作數組的工具類。裡面都是靜态方法。

(1)将數組變成list集合

Arrays.asList(arr)把數組變成list集合有什麼好處?

可以使用集合的思想和方法來操作數組中的元素。

注意1:将數組變成集合,不可以使用集合的增删方法。因為數組的長度是固定。contains(); get(); indexOf(); subList();如果你增删。那麼會反生UnsupportedOperationException。

注意2:如果數組中的元素都是對象。那麼變成集合時,數組中的元素就直接轉成集合中的元素。

如果數組中的元素都是基本資料類型,那麼會将該數組作為集合中的元素存在。

(2)集合變數組:Collection接口中的toArray方法。

1,指定類型的數組到底要定義多長呢?

當指定類型的數組長度小于了集合的size,那麼該方法内部會建立一個新的數組。長度為集合的size。

當指定類型的數組長度大于了集合的size,就不會新建立了數組。而是使用傳遞進來的數組。是以建立一個剛剛好的數組最優。

2,為什麼要将集合變數組?

為了限定對元素的操作。不需要進行增删了。

3.增強for循環

格式:

for(資料類型 變量名 : 被周遊的集合(Collection)或者數組){}

對集合進行周遊。

隻能擷取集合元素。但是不能對集合進行操作。

疊代器除了周遊,還可以進行remove集合中元素的動作。如果是用ListIterator,還可以在周遊過程中對集合進行增删改查的動作。

傳統for和進階for有什麼差別呢?

進階for有一個局限性。必須有被周遊的目标。建議在周遊數組的時候,還是希望是用傳統for。因為傳統for可以定義腳标。

4.可變參數

JDK1.5版本出現的新特性。方法的可變參數。在使用時注意:可變參數一定要定義在參數清單最後面。

可變參數:其實就是上一種數組參數的簡寫形式。不用每一次都手動的建立數組對象。隻要将要操作的元素作為參數傳遞即可。

隐式将這些參數封裝成了數組。

代碼圖例:

黑馬程式員-day17工具類Collections和Arrays

5.靜态導入

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

當方法重名是,指定具備所屬的對象或者類。

例:import static  java.util.Arrays.*;//導入的是Arrays這個類中的所有靜态成員。