❶ java集合的通用方法有哪些
map集合,對象以鍵值對的形式存放在集合中,並且鍵它是不允許重復的。常用的實現是HashMap和TreeMap,HashMap能夠快速的查詢到一個鍵,而TreeMap則是對鍵按序存放的。
list介面是對collection的擴充,它允許存放相同的元素。常用的有2種實現類,ArrayList和LinkedList。ArraryList是一種以數組形式存放元素的集合,更適合於做查詢,而LinkedList內部實現鏈表,適合做增刪元素操作。
set介面同樣是對collection的擴充,它不允許存放相同的元素。常用類HashSet和TreeSet.HashSet主要能夠快速定位到一個元素,需要用到HashCode()方法,而TreeSet類中可以實現對元素的排序。
❷ java的集合類都有哪些,主要方法
:查API文檔埃方法都差不多 存值取值 Set用迭代取值,List可以用迭代也可以用get(下標值),因為List是有順序的,Set沒有順序。Set的add()方法返回一個boolean值,因為不能重復嘛,重復放東西就返回false。Map要特殊一點,用put放東西。
❸ java中的集合類的幾個鮮為人知的實用方法
1。list方法。 將 Enumeration 類型轉換成list類型
2。swap方法。方便的調換一個list中的兩個元素的位置。
3。lastIndexOfSubList方法。從一個list中從後面開始查找另外一個list第一次出現的位置。
4。rotate方法。在一個list中,順序移動每一個元素的位置到指定的位置。
5。replaceAll方法。用指定的元素替換一個list中所用匹配的元素。
6。indexOfSubList方法。從一個list中從前面開始查找另外一個list第一次出現的位置。
❹ 常用的集合類有哪些
按集合元素的個數分為有限集和無限集,其中含一個元素也稱單元集。
按元素的組成分為數集和點集,
❺ java的常用集合類的問題
放什麼類型是你自己定義的
Map<Integer,String> map = new HashMap<Integer,String>();
就可以放整型key和字元串value了
❻ Java五個最常用的集合類之間的區別和聯系
常用的集合類有一下幾種:
List結構的集合類:ArrayList類,LinkedList類,Vector類,Stack類
Map結構的集合類:HashMap類,Hashtable類
Set結構的集合類:HashSet類,TreeSet類
Queue結構的集合:Queue介面
HashMap和Hashtable的區別:
HashMap和Hashtable都是java的集合類,都可以用來存放java對象,這是他們的相同點
以下是他們的區別:
1.歷史原因:
Hashtable是基於陳舊的Dictionary類的,HashMap是java 1.2引進的Map介面的一個現實。
2.同步性:
Hashtable是同步的,這個類中的一些方法保證了Hashtable中的對象是線程安全的,而HashMap則是非同步的,因此HashMap中的對象並不是線程安全的,因為同步的要求會影響執行的效率,所以如果你不需要線程安全的結合那麼使用HashMap是一個很好的選擇,這樣可以避免由於同步帶來的不必要的性能開銷,從而提高效率,我們一般所編寫的程序都是非同步的,但如果是伺服器端的代碼除外。
3.值:
HashMap可以讓你將空值作為一個表的條目的key或value
Hashtable是不能放入空值(null)的
ArrayList和Vector的區別:
ArrayList與Vector都是java的集合類,都是用來存放java對象,這是他們的相同點,
區別:
1.同步性:
Vector是同步的,這個類的一些方法保證了Vector中的對象的線程安全的,而ArrayList則是非同步的,因此ArrayList中的對象並不 是線程安全的,因為同步要求會影響執行的效率,所以你不需要線程安全的集合那麼使用ArrayList是一個很好的選擇,這樣可以避免由於同步帶來的不必 要的性能開銷。
2.數據增長:
從內部實現的機制來講,ArrayList和Vector都是使用數組(Array)來控制集合中的對象,當你向兩種類型中增加元素的時候,如果元素的數目超過了內部數組目前的長度他們都需要擴展內部數組的長度,Vector預設情況下自動增長原來一倍的數組長度,ArrayList是原來的50%,所以最後你獲得的這個集合所佔的空間總是比你實際需要的要大,所以如果你要在集合中保存大量的數據,那麼使用Vector有一些優勢,因為你可以通過設置集合的初始大小來避免不必要的資源開銷。
總結:
1)如果要求線程安全,使用Vector,Hashtable
2)如果不要求線程安全,使用ArrayList,LinkedList,HashMap
3)如果要求鍵值對,則使用HashMap,Hashtable
4)如果數據量很大,又要求線程安全考慮Vector
1.ArrayList: 元素單個,效率高,多用於查詢
2.Vector: 元素單個,線程安全,多用於查詢
3.LinkedList:元素單個,多用於插入和刪除
4.HashMap: 元素成對,元素可為空
5.HashTable: 元素成對,線程安全,元素不可為空
ArrayList
底層是Object數組,所以ArrayList具有數組的查詢速度快的優點以及增刪速度慢的缺點。
而在LinkedList的底層是一種雙向循環鏈表。在此鏈表上每一個數據節點都由三部分組成:前指針(指向前面的節點的位置),數據,後指針(指向後面的節點的位置)。最後一個節點的後指針指向第一個節點的前指針,形成一個循環。
雙向循環鏈表的查詢效率低但是增刪效率高。
ArrayList和LinkedList在用法上沒有區別,但是在功能上還是有區別的。
LinkedList
經常用在增刪操作較多而查詢操作很少的情況下:隊列和堆棧。
隊列:先進先出的數據結構。
棧:後進先出的數據結構。
注意:使用棧的時候一定不能提供方法讓不是最後一個元素的元素獲得出棧的機會。
Vector
(與ArrayList相似,區別是Vector是重量級的組件,使用使消耗的資源比較多。)
結論:在考慮並發的情況下用Vector(保證線程的安全)。
在不考慮並發的情況下用ArrayList(不能保證線程的安全)。
面試經驗(知識點):
java.util.stack(stack即為堆棧)的父類為Vector。可是stack的父類是最不應該為Vector的。因為Vector的底層是數組,且Vector有get方法(意味著它可能訪問到並不屬於最後一個位置元素的其他元素,很不安全)。
對於堆棧和隊列只能用push類和get類。
Stack類以後不要輕易使用。
實現棧一定要用LinkedList。
(在JAVA1.5中,collection有queue來實現隊列。)
Set-HashSet實現類:
遍歷一個Set的方法只有一個:迭代器(interator)。
HashSet中元素是無序的(這個無序指的是數據的添加順序和後來的排列順序不同),而且元素不可重復。
在Object中除了有finalize(),toString(),equals(),還有hashCode()。
HashSet底層用的也是數組。
當向數組中利用add(Object o)添加對象的時候,系統先找對象的hashCode:
int hc=o.hashCode(); 返回的hashCode為整數值。
Int I=hc%n;(n為數組的長度),取得余數後,利用余數向數組中相應的位置添加數據,以n為6為例,如果I=0則放在數組a[0]位置,如果I=1,則 放在數組a[1]位置。如果equals()返回的值為true,則說明數據重復。如果equals()返回的值為false,則再找其他的位置進行比 較。這樣的機制就導致兩個相同的對象有可能重復地添加到數組中,因為他們的hashCode不同。
如果我們能夠使兩個相同的對象具有相同hashcode,才能在equals()返回為真。
在實例中,定義student對象時覆蓋它的hashcode。
因為String類是自動覆蓋的,所以當比較String類的對象的時候,就不會出現有兩個相同的string對象的情況。
現在,在大部分的JDK中,都已經要求覆蓋了hashCode。
結論:如將自定義類用hashSet來添加對象,一定要覆蓋hashcode()和equals(),覆蓋的原則是保證當兩個對象hashcode返回相同的整數,而且equals()返回值為True。
如果偷懶,沒有設定equals(),就會造成返回hashCode雖然結果相同,但在程序執行的過程中會多次地調用equals(),從而影響程序執行的效率。
❼ JAVA的集合類型有哪些
Java集合類型主要有3種:set(集)、list(列表)和map(映射)。
Collection、Set和List的區別如下:
Collection對象之間沒有指定的順序,允許有重復元素和多個null元素對象;它是Set和List介面的父類,是一種最通用型的集合介面;
Set各個元素對象之間沒有指定的順序,不允許有重復元素,最多允許有一個null元素對象;
List各個元素對象之間有指定的順序,允許重復元素和多個null元素對象;
❽ 在java中list集合類有什麼方法
add
get
remove
contains
...
❾ C#中集合包括哪些種類常用的集合類有哪些
集合,表示可以通過遍歷每個元素來訪問的一組對象(特別是可使用foreach循環訪問)
一個集合包括多個元素,即有一個集合類對象和N個元素對象
因為任何集合類都實現了IEnumerable介面,所以任何集合類對象都有一個GetEnumerator()方法,該方法可以返回一個實現了 IEnumerator介面的對象,這個返回的IEnumerator對象既不是集合類對象,也不是集合的元素類對象,它是一個獨立的類對象。通過這個對象,可以遍歷訪問集合類對象中的每一個元素對象
如果集合類是用戶自定義的集合類,則用戶必須實現它的GetEnumerator()方法,否則不能使用循環。當然,與這個自定義集合類對應的IEnumerator類(實現了該介面的類),也要自定義一個才行
比如,ArrayList集合類對應的IEnumerator是 ArrayListEnumeratorSimple
Array集合類對應的IEnumerator是 SZArrayEnumerator
(這兩個類在.net framework類庫文檔(msdn)中都沒有介紹)
1.System.Colloctions中表示集合的行為的介面有:
1)ICollection
定義所有集合的大小、枚舉數和同步方法。派生於IEnumerable
它定義了集合類最基本的行為,所有的集合類都實現了這個介面(基介面)
但是它的行為太過基本:主要就是一個Count屬性,單獨實現它沒有太大意義
2)IEnumerable
公開枚舉數,該枚舉數支持在集合上進行簡單迭代
它只有一個方法 GetEnumerator(),該方法可以返回一個IEnumerator介面,通過它可以遍歷集合
基本上所有的集合類都實現了這個介面
3)IList
IList實現是可排序且可按照索引訪問其成員的值的集合,它本身實現了ICollection和IEnumerable介面
是所有列表的抽象基類。IList 實現有三種類別:只讀、固定大小、可變大小。
4)IDictionary
IDictionary實現是鍵/值對的集合,它本身實現了ICollection和IEnumerable介面
是鍵/值對的集合的基介面。IDictionary 實現有三種類別:只讀、固定大小、可變大小。
IDictionary可稱為字典、映射或散列表,它根據鍵(任意類型)來訪問值
2.System.Collections中可以直接使用的集合類有:
1)ArrayList
實現了介面:IList、ICollection、IEnumerable
只要集合未被修改,ArrayList 就可安全地同時支持多個讀取器
隨著向 ArrayList 中添加元素,容量通過重新分配按需自動增加(2倍增加)
如果需要建立一個對象數組,但不能預先知道數組的大小,就可以使用ArrayList
ArrayList把所有元素都當作object對象引用,因而在訪問ArrayList的元素時要進行類型轉換
優點:動態改變大小、靈活方便的插入和刪除元素、可排序
缺點:插入時性能不如數組、不是強類型的
2)BitArray
實現了介面:ICollection、IEnumerable
管理位值的壓縮數組。
3)Hashtable
實現了介面:IDictionary、ICollection、IEnumerable
可以向Hashtable中自由添加和刪除元素,有些像ArrayList,但沒有那麼大的性能開銷
4)SortedList
實現了介面:IDictionary、ICollection、IEnumerable
SortedLIst兼顧了ArrayList和Hashtable的優點,可按鍵值來排序
5)Queue
實現了介面:ICollection、IEnumerable
Queque是隊列,先進先出的訪問各個元素
可以調用Queque對象的GetEnumerator()方法,得到IEnumerator對象,來遍歷隊列中的各個元素
6)Stack
實現了介面:ICollection、IEnumerable
Stack是堆棧,後進先出的訪問各個元素
可以調用Stack對象的GetEnumerator()方法,得到IEnumerator對象,來遍歷堆棧中的各個元素
3.上面提到的幾種集合類,他們都是通用的集合類,他們所接受的元素大都是Object類型,當對象放入
了集合之後,都失去了原有的類型信息-即這些通用集合類都不是強類型的
解決辦法是使用強類型的集合類
System.Collections命名空間下的CollectionBase,DictionaryBase,ReadOnlyCollectionBase 類
System.Collections.Specialized命名空間下的一些類可以滿足要求,可以直接使用也可以繼承
❿ Java編程:你所知道的集合類都有哪些主要方法
看API啊,我主要用到的是list arrayList map hashmap