【每日一篇】JAVA集合Collection詳解

偷了一年的懶,從今天開始努力學習。保證每天至少一篇技術研究的文字吧。首先要把所有常用的集合全部梳理一遍,從最頂層的接口Collection開始。


Collection(集合)接口是JAVA程序員最常用的接口之一,每天用幾十遍的各路LIST和SET都繼承了這個接口,一個值得注意的誤區是Map並未繼承,數據結構上Map是鍵值對而Collection是元素是集合。具體的繼承關係見下圖:




如圖所示,Collection是集合的最頂層接口,並且沒有任何直接實現。

同時,Collection繼承了Literable接口,該接口提供了Literator(迭代器)用於遍歷集合中的元素,JDK1.5之後該接口還提供了使用forEach(增強型for循環)的能力,在1.8版本後Literable接口還提供了foreach(Comsumer action)方法,這個方法可以讓Collection中的元素遍歷執行被傳入的函數,也就是函數式編程上的拓展.以及Spliterator(可分割遍歷迭代器),用於並行遍歷元素。

Collection聲明瞭控制集合所需的大量方法,比較常用不需要廢話的方法有size()(值得注意的是,這個方法的返回值最大爲int(整形)數的最大值。哪怕實際大小超過這個數也是這樣返回。)、isEmpty()、contains、toArray(T[])(值得注意的是,如果list排序了,返回的數組也會排序)、add(如果不是因爲重複而拒絕添加元素,Collection必須拋出異常,如果是因爲不能重複元素而拒絕添加則返回false)、containsAll()、addALL()、removeAll()、clear().

JDK1.8新增兩個方法,stream()方法和paralleStream()(並行流)方法能使我們獲得一個集合的流對象,用來進行函數式編程方式的集合複雜操作。同樣新增的還有removeIf(Predicate filter)方法,這個方法可以方便的除去集合中滿足傳入的函數的元素。例如list.removeIf(s->s.equals("1"));會去除集合中滿足了等於“1”的字符串。

還有我沒用過的retainAll(Collection)(取交集)方法,如果集合包含傳入的集合,則保留交集,否則將集合置空。

以上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章