Java集合介紹2

來源:互聯網
上載者:User

3、List介面


4、Queue介面

        Queue用於類比了隊列這種資料結構,隊列通常是指“先進先出”(FIFO)的容器。隊列的頭部儲存在隊列中時間最長的元素,隊列的尾部儲存在隊列中時間最短的元素。新元素插入(offer)到隊列的尾部,訪問元素(poll)操作會返回隊列頭部的元素.通常,隊列不允許隨機訪問隊列中的元素。

Queue介面中定義了如下幾個方法:

        》void add(Object e):將指定元素加入此隊列的尾部。

        》Objeot element():擷取隊列頭部的元素,但是不刪除該元素。

        》boolean Offer(Object e):將指定元素加入此隊列的尾部。當使用有容量限制的隊列時,此方法通常比add(Object e)方法更好。

        》Object peek():擷取隊列頭部的元素,但是不刪除該元素。如果此隊列為空白,則返回null。

        》Object poll():擷取隊列頭部的元素,並刪除該元素。如果此隊列為空白,則返回null。

        》Object remove():擷取隊列頭部的元素,並刪除該元素。

        Queue有兩個常用的實作類別:LinkedList和PriorityQueue,LinkedList功能比較強大,它是一個雙向隊列,而且可以當成“棧”來使用,因為該類裡包含了pop(出棧)和push(入棧)兩個方法,除此之外還可以看出它還實現了List介面,所以還可以當成List使用。但是因為LinkedList的實現機制不同於ArrayList和Vector,它內部以列表的形式來儲存集合中的元素,因此在隨機訪問集合元素時效能較差,不過插入、刪除元素時效能非常好(只改變指標所指的地址即可),實際上Vector因為實現了同步功能,所以效能上也落後於ArrayList,所以我們更多的使用的是ArrayList實作類別。我們一般在有特殊要求的時候再去考慮使用LinkedList。至於PriorityQueue是一個比較標準的隊列實作類別,它對元素的要求與前面TreeSet要求基本一致,這裡就不多解釋了。

5、Map介面


6、操作集合工具類:Collections

        Java提供了一個操作set、List和Map等集合的工具類:collections,該工具類裡提供了大量方法

對集合元素進行排序、查詢和修改等操作,還提供了將集合對象設定為不可變、對集合對象實現同步

控制等方法,這樣就彌補了HashMap、ArrayList等不能同步的缺陷。

排序操作——Collections提供了如下幾個方法用於對List集合元素進行排序:

        》static void reverse(List Iist):反轉指定List集合中元素的順序。

        》static void shuffle(List list):對List集合元素進行隨機排序(shuffle方法類比了“洗牌”動作)。

        》static void sort(List list):根據元素的自然順序對指定List集合的元素按升序進行排序。

        》static void sort(List Iist, Comparator c):根據指定Comparator產生的順序對List集合的元素進行排序。

        》static void swap(List list, int i, int j):將指定List集合中 i 處元素和 j 處元素進行交換.

        》static void rotate(List Iist ,int distance):將指定集合中i處元素和list.length一1 -i處的元素進行交換。

尋找,替換操作——Collections還提供了如下用於尋找、替換集合元素的常用方法:

        》static int binarySearch(List list, Object key):使用二分搜尋法搜尋指定List集合,以獲得指定對象在List集合中的索引。如果要該方法可以正常工作,必須保證List中的元素己經處於有序狀態。

        》static Object max(Collection coll):根據元素的自然順序,返回給定集合中的最大元素。

        》static Object max(Collection coll, Comparator comp):根據指定Comparator產生的順序,返回給定集合的最大元素。

        》static Object min(ColIection coll):根據元素的自然順序,返回給定集合中的最小元素.

        》static Object min(Collection coll, Comparator comp):根據指定Comparator產生的順序,返回給定集合的最小元素。

        》static void fill(List Iist, Object obj):使用指定元素obj替換指定List集合中的所有元素。

        》static int frequency(Collection c, object o):返回指定集合中等於指定對象的元素數量。

        》stetic int indexOfSubList(List source, List target):返回子List對象在母List對象中第一次出現的位置索引;如果母Liat中沒有出現這樣的子List,則返回-1。

        》stetic int IastlndexOfSubList(List source,List target):返回子List對象在母List對象中最後一次出現的位置索引:如果母List中沒有出現這樣的子Liat,則返回-1。

        》static boolean replaceAll(List Iist, Object oldVal, Object newVal):使用一個新值newVal替換List對象所有的舊值oldVal。

同步控制:

        Collections類中提供了多個synchronizedXxx方法,該方法返回指定集合對象對應的同步對象,從而可以解決多線程並發訪問集合時的安全執行緒問題。如下面的練習:

public class TestSynchronized{public static void main(String[] args){//下面程式建立了四個同步的集合對象Collection C = Collections.synchronizedCollection(new ArrayList());List list = Collections.synchronizedList(new ArrayList());Set s = Collections.synchronizedSet(new Hashset());Map m = Collections.synchronlzedMap(new HashMap());}}

設定不可變集合——Collections提供了如下三類方法來返回一個不可變的集合:

        》emptyXxx():返回一個空的、不可變的集合對象,此處的集合既可以是List,也可以是Set,還可是Map。

        》SingletonXxX():返回一個只包含指定對象(只有一個或一項元素)的、不可變的集合對象,此處的集合既可以是List,也可以是Set,還可以是Map。

        》unmodifiableXxx:返回指定集合對象的不可變視圖。此處的集合既可以是List,也可以是Set,還可以是Map。

 

到此java集合就算基本介紹完了,更加深入的我們會參考API文檔即可...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.