本文首發於cartoon的博客
轉載請註明出處:https://cartoonyu.github.io/c...java
前言
就在剛剛面試,被問到了Collections工具類有什麼功能,我懵了,不多涉及到Collections這個工具類,只答了對集合元素的操做以及將線程不一樣步的集合類轉換成線程同步,下定決心覆盤一下。git
正文
Collections工具類是java.util包中的一個工具類,主要功能是對集合及其元素進行操做。雖然被問的有點懵,在結束查看官方文檔時發現其實能夠分紅如下幾大部分github
對集合本體的操做
線程同步集合的包裝
-
特徵面試
-
適用範圍安全
-
缺點多線程
- 每次讀寫都要加鎖,鎖的層級爲對象,不利於多線程的同時操做
- 在使用Iterator的遍歷時修改元素ConcurrentModificationException
- 建議使用java.util.concurrent的集合線程同步類
返回不可變集合
-
特徵工具
- 方法名爲emptyXxx(空集合)/singletonXxx(包含傳入元素的集合)/unmodifiableXxx(包含傳入集合元素的集合)
-
適用範圍post
-
emptyXxx線程
- Set
- List
- Map
- Iterator
- Enumeration
-
singletonXxx對象
-
unmodifiableXxx
返回指定集的動態類型安全視圖
-
特徵
-
適用範圍
- List
- Map
- Queue
- Set
- Collection
集合間的轉換
-
特徵
- asLifoQueue(將傳入的Deque轉換成Queue)
- list(將傳入的Enumeration轉換成ArrayList)
- newSetFromMap(根據傳入的空Map返回Set)
- nCopies(根據傳入的n返回含n個副本的List)
集合內元素的操做
添加元素到集合中
-
特徵
- addAll
- copy(將源集合元素複製到目標集合中)
-
適用範圍
查找元素
-
特徵
- binarySearch(二分查找特定元素)
- frequency(查找元素出現次數)
- indexOfSubList(返回目標list在源list的開始位置)
- subIndexOfSubList(返回目標list在源list的結束位置)
- shuffle(返回隨機索引元素)
-
適用範圍
-
binarySearch
-
frequency
-
shuffle
替換
-
特徵
- fill(替換集合全部元素)
- replaceAll(替換特定的值)
-
適用範圍
改變元素位置
-
特徵
- sort(排序)
- swap
- rotate(反轉)
- reverse
-
適用範圍
對比元素
-
特徵
- min/max(尋找最大/小元素)
- disJoint(判斷兩個集合元素是否全不一樣)
-
適用範圍
總結
Collections工具類能對各接口以及實現類實現多種操做
-
集合類級操做
- 返回線程安全集合
- 返回不可變集合
- 返回安全視圖
- 集合間的轉換
-
涉及到內部元素的操做
- 添加元素到集合中
- 查找特定元素
- 替換元素
- 改變元素位置
- 元素間的比較
雖然有些方法不如其餘包內的工具類好用,可是整體來講功能仍是很是強大的。
這篇文章算是對官方文檔的總結和概括,也加以本身的思考,也是面試題之一,但願本身能在以後不會再吃這道題的虧。