黑馬:集合三

來源:互聯網
上載者:User

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、靜態匯入注意點

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

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

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.