java集合類學習心得
集合類學習心得
常用集合的繼承關係
Linked 改快讀慢
Array 讀快改慢
Hash 兩都之間
Collection是集合介面
|————Set子介面:無序,不允許重複。
|————List子介面:有序,可以有重複元素。
區別:Collections是集合類
Set和List對比:
Set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變。
List:和陣列類似,List可以動態增長,查詢元素效率高,插入刪除元素效率低,因為會引起其他元素位置改變。
Set和List具體子類:
Set
|————HashSet:以雜湊表的形式存放元素,插入刪除速度很快。
List
|————ArrayList:動態陣列
|————LinkedList:連結串列、佇列、堆疊。
Array和java.util.Vector
Vector是一種老的動態陣列,是執行緒同步的,效率很低,一般不贊成使用。
List介面
常用方法
add(2,obj)表示在索引值為2的位置新增物件obj,並將原來索引值為2的物件及其以後的所有物件向後移一位。注意,索引值從0開始。
set(2,obj)表示將索引值為2的物件的值設為obj,原來的值被捨棄了。
List集合可以包含相同的物件。
實現類
常用實現類有ArrayList和LinkedList。
ArrayList類採用陣列結構儲存資料,允許所有元素,包括null。優點:根據索引位置對集合進行快速隨機訪問。缺點:在指定索引位置進行插入或者刪除速度較慢。(插入一個需要對其後位置的所有資料都進行操作(後移))
語法格式:List<String> list = newArrayList<String>();
LinkedList類採用連結串列結構儲存資料。優點:插入刪除操作的速度較快。缺點:隨機訪問的速度較慢。(訪問一個數據,必須從表頭逐個訪問到該位置)
語法格式:List<String> list = new LinkedList<String>();
Set介面
常用方法
Set集合不允許儲存相同的物件,因此可以通過Set集合中的愛的addAll()方法,將Collection集合新增到Set集合中並實現去重。
實現類
常用實現類有:HashSet和TreeSet
HashSet實現了Set介面的hash table(雜湊表),依靠HashMap來實現.所以不能有重複的元素,要根據雜湊演算法計算儲存位置。
TreeSet是依靠TreeMap來實現的。TreeSet是一個有序集合,TreeSet中元素將按照升序排列,預設是按照自然排序進行排列,意味著TreeSet中元素要實現Comparable介面。
在更多情況下,您會使用 HashSet 儲存重複自由的集合。考慮到效率,新增到 HashSet 的物件需要採用恰當分配雜湊碼的方式來實現hashCode() 方法。雖然大多數系統類覆蓋了 Object 中預設的hashCode()實現,但建立您自己的要新增到 HashSet 的類時,別忘了覆蓋 hashCode()。當您要從集合中以有序的方式抽取元素時,TreeSet 實現會有用處。為了能順利進行,新增到TreeSet 的元素必須是可排序的。 “集合框架”新增對 Comparable 元素的支援,在排序的“可比較的介面”部分中會詳細介紹。我們暫且假定一棵樹知道如何保持java.lang 包裝程式器類元素的有序狀態。一般說來,先把元素新增到 HashSet,再把集合轉換為TreeSet 來進行有序遍歷會更快。
為優化 HashSet 空間的使用,您可以調優初始容量和負載因子。TreeSet 不包含調優選項,因為樹總是平衡的,保證了插入、刪除、查詢的效能為log(n)。
HashSet 和 TreeSet 都實現 Cloneable 介面。
Map介面
常用方法
Map集合中的元素是通過key,value進行儲存的,要獲取集合中的key或者value值,可以通過keySet()和values()獲取相應的集合,然後通過迭代器遍歷相應的集合獲取key或者value。
常用方法:HashMap和TreeMap
HashMap 和TreeMap。和所有的具體實現一樣,使用哪種實現取決於您的特定需要。在Map 中插入、刪除和定位元素,HashMap 是最好的選擇。但如果您要按順序遍歷鍵,那麼TreeMap 會更好。根據集合大小,先把元素新增到 HashMap,再把這種對映轉換成一個用於有序鍵遍歷的 TreeMap 可能更快。使用HashMap 要求新增的鍵類明確定義了 hashCode() 實現。有了TreeMap 實現,新增到對映的元素一定是可排序的。
HashMap允許使用<null,null>鍵值,而TreeMap不能。
HashMap實現快速查詢,插入和刪除,而TreeMap可以實現集合的物件有序排列。
相關推薦
java集合類學習心得
集合類學習心得 常用集合的繼承關係 Linked 改快讀慢 Array 讀快改慢 Hash 兩都之間 Collection是集合介面 |————Set子介面:無序,不允許重複。 |————List子介面:有序,可以有重複元素。 區別:Colle
Java集合類學習(一)
oid [] *** sta lastindex pear 繼承 stub addall 1. List接口的常用方法 List接口繼承了Collection接口,因此包含Collection中的所有方法。又因為List是列表類型,所以List接口還提供了一些適合於自身
java集合類學習筆記之LinkList
prev strong 內部數據 ins 屬性 aced 裏的 row return 1、簡述 LinkList的底層其實就是一個雙向鏈表,所謂的鏈表就是一個LinkList內部靜態靜態類(Node),對LinkList的所有操作本質上就是通過對LinkList中新
java集合類學習筆記之LinkedHashMap
super 增長 remove sta extend red for normal 順序 1、簡述 LinkedHashMap是HashMap的子類,他們最大的不同是,HashMap內部維護的是一個單向的鏈表數組,而LinkedHashMap內部維護的是一個雙向的鏈
java集合類學習小記
lse 實例 hash 如果 集合 常用 遍歷 保存 bject 【List接口】:可變數組,允許保存所有類型元素,包括null,元素可重復,按添加順序保存【常用實現類】:建議用ArrayListArrayList:索引訪問速度快(但插入和刪除節點較慢)LinkedList
java集合類學習
一:Collection介面 Set介面和List介面都集成於Collection介面 1.Set &nb
JAVA集合類框架學習彙總
學習連結: 集合類框架教程:http://www.runoob.com/java/java-collections.html 集合類框架面試題:https://www.jianshu.com/p/8b0a09f70b9c 集合類框架的優點: 通過使用集合框架的核心類可以減少
Java集合類之介面學習
一、前言 在Java中使用介面能規範實現該介面的類該實現的功能,介紹Java集合類的介面有助於對Java集合整體、對不同場景該使用什麼樣的集合有個明確的認識,對於學習Java開發的人來說,Java標準庫集合的學習是必經之路,所以自今天起,我打算每天從
深入學習java集合:JAVA集合類主要介面
Iterator介面主要用於遍歷 Collection 集合中的元素,Iterator物件也被稱為迭代器。Iterator介面隱藏了各種 Collection 實現類的底層細節,嚮應用程式提供了遍歷 Collection 集合元素的統一程式設計介面。Iterator僅用於遍歷集合,Iter
Java集合類 List Set Map
set map 集合 java集合類 索引 擁有 對象 ava 重復 排序 1.List(有序、可重復) (1)List裏存放的對象是有序的,而且可以重復。 (2)List關註的是索引,擁有一系列索引相關的方法。 (3)往其中插入或刪除數據時,後面的數據會移動。 2.S
JAVA集合類--(一閃而過)
最好 情況 logs tab 發生 映射關系 next abstract 自己的 一、集合與數組 數組(可以存儲基本數據類型)是用來存現對象的一種容器,但是數組的長度固定,不適合在對象數量未知的情況下使用。 集合(只能存儲對象,對象類型可以不一樣)的長度可變,可在多
java集合類
集合 結構 關鍵字 特定 ref 向量 實現 數據結構 散列 集合類存放於java.util包中。 集合類存放的都是對象的引用,而非對象本身,出於表達上的便利,我們稱集合中的對象就是指集合中對象的引用(reference)。 集合類型主要有3種:set(集)、list(列表
Java集合博客的導航 java集合框架學習路線
score blank 學習路線 lis map html log sco link 一、java集合Collection和Map的概述(http://www.cnblogs.com/escore/p/6931369.html) 二、java集合Collection接口
java集合類整理
pre 大於等於 lis heads 視圖 sys logs println class LinkedList 優點:插入刪除迅速 缺點:不適合隨機訪問 List<String> staff = new LinkedList<String>()
Java集合類總結
tree dex trac emp oat err 條件 最終 一個地方 集合類和接口之間的關系圖,能夠比較清楚的展示各個類和接口之間的關系(其中:點框為接口(...) 短橫線框為抽象類(---) 實線為類) 上圖可以看到:集合可以分成兩部分來學習。一個是以Colle
java System類學習筆記
lis per += start spa getprop ext static puts java 中 System 類 最常見到 System.out.println(); System類 定義為 public final class System extends Obj
Java集合類操作優化經驗總結
設置 mar ise long 初始化 實際類型 線性表 core 不一定 在實際的項目開發中會有非常多的對象,怎樣高效、方便地管理對象,成為影響程序性能與可維護性的重要環節。Java 提供了集合框架來解決此類問題。線性表、鏈表、哈希表等是經常使用的數據結構,在
Java集合類匯總記錄--guava篇
hba nth uav ted enum ranges rac 內部 組成 BiMap HashBiMap<K,V> 實現了兩份哈希表數據結構(本類獨立實現)。分別負責兩個方向的映射。 EnumBiMap<K,V> 兩個EnumMap對象分別
Java集合類解析
先來 重新 興趣 exp weak hashtable 過程 子類 put Java中的集合類包含的內容很多而且很重要,很多數據的存儲和處理(排序,去重,篩選等)都需要通過集合類來完成。 首先java中集合類主要有兩大分支: (1)Collection (2)Map
Java 集合類
示例 data 訪問速度 並發 nbsp remove 測試 自定義 arr 一、集合與數組 數組(可以存儲基本數據類型)是用來存現對象的一種容器,但是數組的長度固定,不適合在對象數量未知的情況下使用。 集合(只能存儲對象,對象類型可以不一樣)的長度可變,可在多數情況下使用