Yige

Yige

Build

Java集合類基本概念

Java 集合類基本概念#

Java 中的集合框架大類可分為CollectionMap;兩者的區別:

  • Collection 是單列集合;Map 是雙列集合
  • Collection 中只有 Set 系列要求元素唯一;Map 中鍵需要唯一,值可以重複
  • Collection 的數據結構是針對元素的;Map 的數據結構是針對鍵的。

Collection#

Collection 包括兩大體系:

  • List: 存取有序,有索引,可以根據索引來進行取值,元素可以重複
  • Set: 存取無序,元素不可以重複

List#

包含有

  • ArrayList:底層是數組實現,查詢速度快,增刪速度慢
  • LinkedList: 基於鏈表結構實現的,查詢速度慢,增刪速度快,提供了特殊的方法,對頭尾的元素操作(進行增刪查),線程不安全
  • Vector:數組結構,查詢快,增刪慢,線程安全,因此效率低 (已過時)

Set#

Set 集合的特點:元素不重複,存取無序,無下標 Set 集合下面有:

  • HashSet: 存儲無序,元素無索引,元素不可以重複。底層是哈希表.
  • LinkedHashSet: 基於鏈表和哈希表共同實現的,所以具有存取有序,元素唯一的特點
  • TreeSet:基於二叉樹的數據結構,元素唯一,存取無序 (可以在添加元素的時候進行排序)

Map#

Map 是一個雙列集合,其中保存的是鍵值對,鍵要求保持唯一性,值可以重複,包含:

  • HashMap
  • LinkedHashMap
  • TreeMap

工具類 Collections#

Collections 工具類提供了大量針對 Collection/Map 的操作

排序操作(主要針對 List 接口相關)#

  • reverse(List list):反轉指定 List 集合中元素的順序
  • shuffle(List list):對 List 中的元素進行隨機排序(洗牌)
  • sort(List list):對 List 裡的元素根據自然升序排序
  • sort(List list, Comparator c):自定義比較器進行排序
  • swap(List list, int i, int j):將指定 List 集合中 i 處元素和 j 處元素進行交換
  • rotate(List list, int distance):將所有元素向右移位指定長度,如果 distance 等於 size 那麼結果不變

查找和替換(主要針對 Collection 接口相關)#

  • binarySearch(List list, Object key):使用二分搜索法,以獲得指定對象在 List 中的索引,前提是集合已經排序
  • max(Collection col):返回最大元素
  • max(Collection col, Comparator comp):根據自定義比較器,返回最大元素
  • min(Collection col):返回最小元素
  • min(Collection col, Comparator comp):根據自定義比較器,返回最小元素
  • fill(List list, Object obj):使用指定對象填充
  • frequency(Collection Object o):返回指定集合中指定對象出現的次數
  • replaceAll(List list, Object old, Object new):替換

設置不可變集合#

Collections 有三類方法可返回一個不可變集合:

  • emptyXxx():返回一個空的不可變的集合對象
  • singletonXxx():返回一個只包含指定對象的,不可變的集合對象。
  • unmodifiableXxx():返回指定集合對象的不可變視圖

其它#

  • disjoint(Collection<?> c1, Collection<?> c2): 如果兩個指定 collection 中沒有相同的元素,則返回 true。
  • addAll(Collection<? super T> c, T... a): 一種方便的方式,將所有指定元素添加到指定 collection 中
  • Comparator<T> reverseOrder(Comparator<T> cmp): 返回一個比較器,它強行反轉指定比較器的順序。如果指定比較器為 null,則此方法等同於 reverseOrder ()(換句話說,它返回一個比較器,該比較器將強行反轉實現 Comparable 接口那些對象 collection 上的自然順序)

參考鏈接#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。