1. 程式人生 > >java集合類學習心得

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 一、集合與數組 數組(可以存儲基本數據類型)是用來存現對象的一種容器,但是數組的長度固定,不適合在對象數量未知的情況下使用。 集合(只能存儲對象,對象類型可以不一樣)的長度可變,可在多數情況下使用