java集合與類
⑴ 怎麼才能了解java集合類集合類是什麼
數組是集合的一種,是集合的一個子集,你理解了數組就理解了集合.
理解集合類
集合類存放於java.util包中。
集合類存放的都是對象的引用,而非對象本身,出於表達上的便利,我們稱集合中的對象就是指集合中對象的引用(reference)。
集合類型主要有3種:set(集)、list(列表)和map(映射)。
(1)集
集(set)是最簡單的一種集合,它的對象不按特定方式排序,只是簡單的把對象加入集合中,就像往口袋裡放東西。
對集中成員的訪問和操作是通過集中對象的引用進行的,所以集中不能有重復對象。
集也有多種變體,可以實現排序等功能,如TreeSet,它把對象添加到集中的操作將變為按照某種比較規則將其插入到有序的對象序列中。它實現的是SortedSet介面,也就是加入了對象比較的方法。通過對集中的對象迭代,我們可以得到一個升序的對象集合。
(2)列表
列表的主要特徵是其對象以線性方式存儲,沒有特定順序,只有一個開頭和一個結尾,當然,它與根本沒有順序的集是不同的。
列表在數據結構中分別表現為:數組和向量、鏈表、堆棧、隊列。
關於實現列表的集合類,是我們日常工作中經常用到的,將在後邊的筆記詳細介紹。
(3)映射
映射與集或列表有明顯區別,映射中每個項都是成對的。映射中存儲的每個對象都有一個相關的關鍵字(Key)對象,關鍵字決定了對象在映射中的存儲位置,檢索對象時必須提供相應的關鍵字,就像在字典中查單詞一樣。關鍵字應該是唯一的。
關鍵字本身並不能決定對象的存儲位置,它需要對過一種散列(hashing)技術來處理,產生一個被稱作散列碼(hash code)的整數值,散列碼通常用作一個偏置量,該偏置量是相對於分配給映射的內存區域起始位置的,由此確定關鍵字/對象對的存儲位置。理想情況下,散列處理應該產生給定范圍內均勻分布的值,而且每個關鍵字應得到不同的散列碼。
集合類簡介
java.util中共有13個類可用於管理集合對象,它們支持集、列表或映射等集合,以下是這些類的簡單介紹
集:
HashSet: 使用HashMap的一個集的實現。雖然集定義成無序,但必須存在某種方法能相當高效地找到一個對象。使用一個HashMap對象實現集的存儲和檢索操作是在固定時間內實現的.
TreeSet: 在集中以升序對對象排序的集的實現。這意味著從一個TreeSet對象獲得第一個迭代器將按升序提供對象。TreeSet類使用了一個TreeMap.
列表:
Vector: 實現一個類似數組一樣的表,自動增加容量來容納你所需的元素。使用下標存儲和檢索對象就象在一個標準的數組中一樣。你也可以用一個迭代器從一個Vector中檢索對象。Vector是唯一的同步容器類??當兩個或多個線程同時訪問時也是性能良好的。
Stack: 這個類從Vector派生而來,並且增加了方法實現棧??一種後進先出的存儲結構。
LinkedList: 實現一個鏈表。由這個類定義的鏈表也可以像棧或隊列一樣被使用。
ArrayList: 實現一個數組,它的規模可變並且能像鏈表一樣被訪問。它提供的功能類似Vector類但不同步。
映射:
HashTable: 實現一個映象,所有的鍵必須非空。為了能高效的工作,定義鍵的類必須實現hashcode()方法和equal()方法。這個類是前面java實現的一個繼承,並且通常能在實現映象的其他類中更好的使用。
HashMap: 實現一個映象,允許存儲空對象,而且允許鍵是空(由於鍵必須是唯一的,當然只能有一個)。
WeakHashMap: 實現這樣一個映象:通常如果一個鍵對一個對象而言不再被引用,鍵/對象對將被舍棄。這與HashMap形成對照,映象中的鍵維持鍵/對象對的生命周期,盡管使用映象的程序不再有對鍵的引用,並且因此不能檢索對象。
TreeMap: 實現這樣一個映象,對象是按鍵升序排列的。
Set和List都是由公共介面Collection擴展而來,所以它們都可以使用一個類型為Collection的變數來引用。這就意味著任何列表或集構成的集合都可以用這種方式引用,只有映射類除外(但也不是完全排除在外,因為可以從映射獲得一個列表。)所以說,把一個列表或集傳遞給方法的標准途徑是使用Collection類型的參數
⑵ java中的類,集合,類的屬性,對象,有什麼關系
集合中存object
,可以是數組,對象
,字元串,一個數
等等
類裡面有屬性
有方法,類new一個對象時,對象就可以調用類裡面的屬性和方法。
void修飾的方法不用返回值
int
String或者boolean等等這樣的修飾的方法需要返回值
至於什麼時候傳參數根據你代碼具體的邏輯而定,你自己決定的
⑶ Java五個最常用的集合類之間的區別和聯系
集合類型主要有3種:set(集)、list(列表)和map(映射)。
1、List(有序、可重復)
List里存放的對象是有序的,同時也是可以重復的,List關注的是索引,擁有一系列和索引相關的方法,查詢速度快。因為往list集合里插入或刪除數據時,會伴隨著後面數據的移動,所有插入刪除數據速度慢。
2、Set(無序、不能重復)
Set里存放的對象是無序,不能重復的,集合中的對象不按特定的方式排序,只是簡單地把對象加入集合中。
3、Map(鍵值對、鍵唯一、值不唯一)
Map集合中存儲的是鍵值對,鍵不能重復,值可以重復。根據鍵得到值,對map集合遍歷時先得到鍵的set集合,對set集合進行遍歷,得到相應的值。
⑷ Java中集合類的區別,請高手詳解
ArrayList 實現List介面 ,隨著向 ArrayList 中不斷添加元素,其容量也自動增長
Vector向量 不過我是不太喜歡這個類
HashMap實現Map介面--可以說內存就是一個HashMap
HashTable實現一個哈希表,該哈希表將鍵映射到相應的值
Set一個不包含重復元素的容器
HashMap, HashTable都是「Key-Value對」形式的
Vector和ArrayList區別
Vector和ArrayList Vector和ArrayList在使用上非常相似,都可用來表示一組數量可變的對象應用的集合,並且可以隨機地訪問其中的元素。
Vector的方法都是同步的(Synchronized),是線程安全的(thread-safe),而ArrayList的方法不是,由於線程的同步必然要影響性能,因此,ArrayList的性能比Vector好。
當Vector或ArrayList中的元素超過它的初始大小時,Vector會將它的容量翻倍,而ArrayList只增加50%的大小,這樣,ArrayList就有利於節約內存空間。
Hashtable和HashMap的區別
Hashtable和HashMap它們的性能方面的比較類似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。
ArrayList和LinkedList的區別
對於處理一列數據項,Java提供了兩個類ArrayList和LinkedList, ArrayList的內部實現是基於內部數組Object[], 所以從概念上講,它更象數組,但LinkedList的內部實現是基於一組連接的記錄,所以,它更象一個鏈表結構,所以,它們在性能上有很大的差別。
從上面的分析可知,在ArrayList的前面或中間插入數據時,你必須將其後的所有數據相應的後移,這樣必然要花費較多時間,所以,當你的操作是在一列 數據的後面添加數據而不是在前面或中間,並且需要隨機地訪問其中的元素時,使用ArrayList會提供比較好的性能
而訪問鏈表中的某個元素時,就必須從鏈表的一端開始沿著連接方向一個一個元素地去查找,直到找到所需的元素為止,所以,當你的操作是在一列數據的前面或中間添加或刪除數據,並且按照順序訪問其中的元素時,就應該使用LinkedList了。
如果在編程中,1,2兩種情形交替出現,這時,你可以考慮使用List這樣的通用介面,而不用關心具體的實現,在具體的情形下,它的性能由具體的實現來保證。
配置集合類的初始大小
在Java集合框架中的大部分類的大小是可以隨著元素個數的增加而相應的增加的,我們似乎不用關心它的初始大小,但如果我們考慮類的性能問題時,就一定要考慮盡可能地設置好集合對象的初始大小,這將大大提高代碼的性能。
比如,Hashtable預設的初始大小為101,載入因子為0.75,即如果其中的元素個數超過75個,它就必須增加大小並重新組織元素,所以,如果你 知道在創建一個新的Hashtable對象時就知道元素的確切數目如為110,那麼,就應將其初始大小設為110/0.75=148,這樣,就可以避免重 新組織內存並增加大小。
⑸ java集合類的JAVA集合類(介紹)
在使用Java的時候,我們都會遇到使用集合(Collection)的時候,但是Java API提供了多種集合的實現,我在使用和面試的時候頻頻遇到這樣的「抉擇」 。 :)(主要還是面試的時候)久而久之,也就有了一點點的心得體會,寫出來以供大家討論 。
總的說來,Java API中所用的集合類,都是實現了Collection介面,他的一個類繼承結構如下:
Collection<--List<--Vector
Collection<--List<--ArrayList
Collection<--List<--LinkedList
Collection<--Set<--HashSet
Collection<--Set<--HashSet<--LinkedHashSet
Collection<--Set<--SortedSet<--TreeSet
Vector : 基於Array的List,其實就是封裝了Array所不具備的一些功能方便我們使用,它不可能走出Array的限制。性能也就不可能超越Array。所以,在可能的情況下,我們要多運用Array。另外很重要的一點就是Vector「synchronized」的,這個也是Vector和ArrayList的唯一的區別。ArrayList:同Vector一樣是一個基於Array上的鏈表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector優越一些,但是當運行到多線程環境中時,可需要自己在管理線程的同步問題。LinkedList:LinkedList不同於前面兩種List,它不是基於Array的,所以不受Array性能的限制。它每一個節點(Node)都包含兩方面的內容:1.節點本身的數據(data);2.下一個節點的信息(nextNode)。所以當對LinkedList做添加,刪除動作的時候就不用像基於Array的List一樣,必須進行大量的數據移動。只要更改nextNode的相關信息就可以實現了。這就是LinkedList的優勢。
⑹ 請問Java中的容器類與集合有什麼區別
容器(Container)
Spring 提供容器功能,容器可以管理對象的生命周期、對象與對象之間的依賴關系,您可以使用一個配置文件(通常是XML),在上面定義好對象的名稱、如何產生(Prototype 方式或Singleton 方式)、哪個對象產生之後必須設定成為某個對象的屬性等,在啟動容器之後,所有的對象都可以直接取用,不用編寫任何一行程序代碼來產生對象,或是建立對象與對象之間的依賴關系。
換個更直白點的說明方式:容器是一個Java 所編寫的程序,原先必須自行編寫程序以管理對象關系,現在容器都會自動幫您作好。
常用容器:WebSphere,WebLogic,Resin,Tomcat
集合類存放於java.util包中。
集合類存放的都是對象的引用,而非對象本身,出於表達上的便利,我們稱集合中的對象就是指集合中對象的引用(reference)。
集合類型主要有3種:set(集)、list(列表)和map(映射)。
(1)集
集(set)是最簡單的一種集合,它的對象不按特定方式排序,只是簡單的把對象加入集合中,就像往口袋裡放東西。
對集中成員的訪問和操作是通過集中對象的引用進行的,所以集中不能有重復對象。
集也有多種變體,可以實現排序等功能,如TreeSet,它把對象添加到集中的操作將變為按照某種比較規則將其插入到有序的對象序列中。它實現的是SortedSet介面,也就是加入了對象比較的方法。通過對集中的對象迭代,我們可以得到一個升序的對象集合。
(2)列表
列表的主要特徵是其對象以線性方式存儲,沒有特定順序,只有一個開頭和一個結尾,當然,它與根本沒有順序的集是不同的。
列表在數據結構中分別表現為:數組和向量、鏈表、堆棧、隊列。
關於實現列表的集合類,是我們日常工作中經常用到的,將在後邊的筆記詳細介紹。
(3)映射
映射與集或列表有明顯區別,映射中每個項都是成對的。映射中存儲的每個對象都有一個相關的關鍵字(Key)對象,關鍵字決定了對象在映射中的存儲位置,檢索對象時必須提供相應的關鍵字,就像在字典中查單詞一樣。關鍵字應該是唯一的。
關鍵字本身並不能決定對象的存儲位置,它需要對過一種散列(hashing)技術來處理,產生一個被稱作散列碼(hash code)的整數值,散列碼通常用作一個偏置量,該偏置量是相對於分配給映射的內存區域起始位置的,由此確定關鍵字/對象對的存儲位置。理想情況下,散列處理應該產生給定范圍內均勻分布的值,而且每個關鍵字應得到不同的散列碼。
集合類簡介
java.util中共有13個類可用於管理集合對象,它們支持集、列表或映射等集合,以下是這些類的簡單介紹
集:
HashSet: 使用HashMap的一個集的實現。雖然集定義成無序,但必須存在某種方法能相當高效地找到一個對象。使用一個HashMap對象實現集的存儲和檢索操作是在固定時間內實現的.
TreeSet: 在集中以升序對對象排序的集的實現。這意味著從一個TreeSet對象獲得第一個迭代器將按升序提供對象。TreeSet類使用了一個TreeMap.
列表:
Vector: 實現一個類似數組一樣的表,自動增加容量來容納你所需的元素。使用下標存儲和檢索對象就象在一個標準的數組中一樣。你也可以用一個迭代器從一個Vector中檢索對象。Vector是唯一的同步容器類??當兩個或多個線程同時訪問時也是性能良好的。
Stack: 這個類從Vector派生而來,並且增加了方法實現棧??一種後進先出的存儲結構。
LinkedList: 實現一個鏈表。由這個類定義的鏈表也可以像棧或隊列一樣被使用。
ArrayList: 實現一個數組,它的規模可變並且能像鏈表一樣被訪問。它提供的功能類似Vector類但不同步。
映射:
HashTable: 實現一個映象,所有的鍵必須非空。為了能高效的工作,定義鍵的類必須實現hashcode()方法和equal()方法。這個類是前面java實現的一個繼承,並且通常能在實現映象的其他類中更好的使用。
HashMap: 實現一個映象,允許存儲空對象,而且允許鍵是空(由於鍵必須是唯一的,當然只能有一個)。
WeakHashMap: 實現這樣一個映象:通常如果一個鍵對一個對象而言不再被引用,鍵/對象對將被舍棄。這與HashMap形成對照,映象中的鍵維持鍵/對象對的生命周期,盡管使用映象的程序不再有對鍵的引用,並且因此不能檢索對象。
TreeMap: 實現這樣一個映象,對象是按鍵升序排列的。
Set和List都是由公共介面Collection擴展而來,所以它們都可以使用一個類型為Collection的變數來引用。這就意味著任何列表或集構成的集合都可以用這種方式引用,只有映射類除外(但也不是完全排除在外,因為可以從映射獲得一個列表。)所以說,把一個列表或集傳遞給方法的標准途徑是使用Collection類型的參數。
⑺ 在Java中,什麼是集合類,跟普通類有什麼區別
簡單的說,集合類有list列,set集和map映射 三大類!
Set(集):集合中的對象無排列順序,並且沒有重復的對象.
List(隊列):集合中的對象按照索引的順序排列,可以有重復的對象。
Map(映射):集合中的每一個元素都是一對一對的,包括一個key對象,一個Value對象(一個Key指向一個Value).集合中沒有重復的key對象,但是vaulue對象可以重復.
集合類是進行集合操作的。
⑻ java中集合類是什麼意思
java.util中共有13個類可用於管理集合對象,它們支持集、列表或映射等集合,以下是這些類的簡單介紹
集:
HashSet: 使用HashMap的一個集的實現。雖然集定義成無序,但必須存在某種方法能相當高效地找到一個對象。使用一個HashMap對象實現集的存儲和檢索操作是在固定時間內實現的.
TreeSet: 在集中以升序對對象排序的集的實現。這意味著從一個TreeSet對象獲得第一個迭代器將按升序提供對象。TreeSet類使用了一個TreeMap.
列表:
Vector: 實現一個類似數組一樣的表,自動增加容量來容納你所需的元素。使用下標存儲和檢索對象就象在一個標準的數組中一樣。你也可以用一個迭代器從一個Vector中檢索對象。Vector是唯一的同步容器類??當兩個或多個線程同時訪問時也是性能良好的。
Stsck: 這個類從Vector派生而來,並且增加了方法實現棧??一種後進先出的存儲結構。
LinkedList: 實現一個鏈表。由這個類定義的鏈表也可以像棧或隊列一樣被使用。
ArrayList: 實現一個數組,它的規模可變並且能像鏈表一樣被訪問。它提供的功能類似Vector類但不同步。
映射:
HashTable: 實現一個映象,所有的鍵必須非空。為了能高效的工作,定義鍵的類必須實現hashcode()方法和equal()方法。這個類是前面java實現的一個繼承,並且通常能在實現映象的其他類中更好的使用。
HashMap: 實現一個映象,允許存儲空對象,而且允許鍵是空(由於鍵必須是唯一的,當然只能有一個)。
WeakHashMap: 實現這樣一個映象:通常如果一個鍵對一個對象而言不再被引用,鍵/對象對將被舍棄。這與HashMap形成對照,映象中的鍵維持鍵/對象對的生命周期,盡管使用映象的程序不再有對鍵的引用,並且因此不能檢索對象。
TreeMap: 實現這樣一個映象,對象是按鍵升序排列的。
Set 和List都是由公共介面Collection擴展而來,所以它們都可以使用一個類型為Collection的變數來引用。這就意味著任何列表或集構成的 集合都可以用這種方式引用,只有映射類除外(但也不是完全排除在外,因為可以從映射獲得一個列表。)所以說,把一個列表或集傳遞給方法的標准途徑是使用 Collection類型的參數。
⑼ java常見的集合、介面、類的區別和聯系
集合類似於數組,不過相對數組集合更有優勢,不限定集合的長度,可以添加任意多的元素。同時,一個集合可以存入不同的元素,不過通常情況下集合會和數組一樣指定單一的元素,方便操作。集合中限定元素成為泛型。
介面和類差不多,不過介面中的方法都屬於抽象的方法(也就是只有方法名,參數,沒有方法的主題)。介面需要類實現(類似與繼承,implement),實現該介面的類必須重寫介面中所有的方法(也就是把抽象的方法加上方法主題,便於運用)。
類就比較普通了,經常都會接觸到,類通常用於封裝多個方法,把有關聯的方法集合在一起,便於調用(主函數也屬於方法的一種,是寫在類裡面的)。
⑽ java集合是什麼
Java集合是什麼:
Java 中的集合類庫可以幫助我們在程序設計中實現傳統的數據結構。
Java的集合類是一個用來存放對象的容器,有以下特點:
1、Java集合只能存放對象。加入添加了一個基本數據類型,會被自動裝箱後存入集合。
2、集合存放的是多個對象的引用,對象本身是在堆內存中的。
3、集合可以存放不同類型,不限數量的數據類型。
集合分三種:1、Set 2 、List 3、Map,下面進行具體介紹。
擴展鏈接:
主要內容:
1)手寫ArrayList
2)手寫單鏈表
3)手寫LinkedList
4)手寫HashMap
5)手寫HashSet
6)最新並發集合類
學習目標:
1. 掌握手寫ArrayList
2. 掌握手寫單鏈表
3. 掌握手寫LinkedList
4. 掌握手寫HashMap
5. 掌握手寫HashSet
6. 理解最新並發集合類底層原理
視頻課程小結:
01_集合提升訓練_手寫ArrayList_get_size_isEmpty_自定義異常
02_集合提升訓練_手寫ArrayList_構造方法_add
03_集合提升訓練_手寫ArrayList_toString_iterator
04_集合提升循環_手寫單鏈表_get
05_集合提升訓練_手寫單鏈表_add_remove_toString
06_集合提升訓練_手寫LinkedList
07_集合提升訓練_手寫LinkedList_添加內存分配圖
08_集合提升訓練_HashMap的原理和代碼准備
09_集合提升訓練_手寫HashMap的put
10_集合提升訓練_手寫HashMap的get_toString
11_集合提升訓練_手寫HashSet
12_集合提升訓練_新一代並發集合類