『壹』 在java中list集合類有什麼方法
add
get
remove
contains
...
『貳』 Java中的集合有哪些 在什麼情況下使用
Collection:List、Set
Map:HashMap、HashTable
如何在它們之間選擇
一、Array , Arrays
Java所有「存儲及隨機訪問一連串對象」的做法,array是最有效率的一種。
1、
效率高,但容量固定且無法動態改變。
array還有一個缺點是,無法判斷其中實際存有多少元素,length只是告訴我們array的容量。
2、Java中有一個Arrays類,專門用來操作array。
arrays中擁有一組static函數,
equals():比較兩個array是否相等。array擁有相同元素個數,且所有對應元素兩兩相等。
fill():將值填入array中。
sort():用來對array進行排序。
binarySearch():在排好序的array中尋找元素。
System.array():array的復制。
二、Collection , Map
若撰寫程序時不知道究竟需要多少對象,需要在空間不足時自動擴增容量,則需要使用容器類庫,array不適用。
1、Collection 和 Map 的區別
容器內每個為之所存儲的元素個數不同。
Collection類型者,每個位置只有一個元素。
Map類型者,持有 key-value pair,像個小型資料庫。
2、各自旗下的子類關系
Collection
--List: 將以特定次序存儲元素。所以取出來的順序可能和放入順序不同。
--ArrayList / LinkedList / Vector
--Set : 不能含有重復的元素
--HashSet / TreeSet
Map
--HashMap
--HashTable
--TreeMap
3、其他特徵
* List,Set,Map將持有對象一律視為Object型別。
* Collection、List、Set、Map都是介面,不能實例化。
繼承自它們的 ArrayList, Vector, HashTable, HashMap是具象class,這些才可被實例化。
* vector容器確切知道它所持有的對象隸屬什麼型別。vector不進行邊界檢查。
三、Collections
Collections是針對集合類的一個幫助類。提供了一系列靜態方法實現對各種集合的搜索、排序、線程完全化等操作。
相當於對Array進行類似操作的類——Arrays。
如,Collections.max(Collection coll); 取coll中最大的元素。
Collections.sort(List list); 對list中元素排序
四、如何選擇?
1、容器類和Array的區別、擇取
* 容器類僅能持有對象引用(指向對象的指針),而不是將對象信息一份至數列某位置。
* 一旦將對象置入容器內,便損失了該對象的型別信息。
2、
* 在各種Lists中,最好的做法是以ArrayList作為預設選擇。當插入、刪除頻繁時,使用LinkedList();
Vector總是比ArrayList慢,所以要盡量避免使用。
* 在各種Sets中,HashSet通常優於HashTree(插入、查找)。只有當需要產生一個經過排序的序列,才用TreeSet。
HashTree存在的唯一理由:能夠維護其內元素的排序狀態。
* 在各種Maps中
HashMap用於快速查找。
* 當元素個數固定,用Array,因為Array效率是最高的。
結論:最常用的是ArrayList,HashSet,HashMap,Array。
注意:
1、Collection沒有get()方法來取得某個元素。只能通過iterator()遍歷元素。
2、Set和Collection擁有一模一樣的介面。
3、List,可以通過get()方法來一次取出一個元素。使用數字來選擇一堆對象中的一個,get(0)...。(add/get)
4、一般使用ArrayList。用LinkedList構造堆棧stack、隊列queue。
5、Map用 put(k,v) / get(k),還可以使用containsKey()/containsValue()來檢查其中是否含有某個key/value。
HashMap會利用對象的hashCode來快速找到key。
* hashing
哈希碼就是將對象的信息經過一些轉變形成一個獨一無二的int值,這個值存儲在一個array中。
我們都知道所有存儲結構中,array查找速度是最快的。所以,可以加速查找。
發生碰撞時,讓array指向多個values。即,數組每個位置上又生成一個槤表。
6、Map中元素,可以將key序列、value序列單獨抽取出來。
使用keySet()抽取key序列,將map中的所有keys生成一個Set。
使用values()抽取value序列,將map中的所有values生成一個Collection。
為什麼一個生成Set,一個生成Collection?那是因為,key總是獨一無二的,value允許重復
參考資料: http://blog.163.com/xyz_1112/blog/static/386944022007113032941347/
『叄』 java中的集合分類
JAVA集合框架特徵介紹(詳細的去看看動力節點的java基礎大全301集就知道了)
Collection介面結構
其中,有幾個比較常用的方法,比如方法add()添加一個元素到集合中,addAll()將指定集合中的所有元素添加到集合中,contains()方法檢測集合中是否包含指定的元素,toArray()方法返回一個表示集合的數組。Collection介面有三個子介面,下面詳細介紹。
1.List
List介面擴展自Collection,它可以定義一個允許重復的有序集合,從List介面中的方法來看,List介面主要是增加了面向位置的操作,允許在指定位置上操作元素,同時增加了一個能夠雙向遍歷線性表的新列表迭代器ListIterator。AbstractList類提供了List介面的部分實現,AbstractSequentialList擴展自AbstractList,主要是提供對鏈表的支持。下面介紹List介面的兩個重要的具體實現類,也是我們可能最常用的類,ArrayList和LinkedList。
ArrayList
通過閱讀ArrayList的源碼,我們可以很清楚地看到裡面的邏輯,它是用數組存儲元素的,這個數組可以動態創建,如果元素個數超過了數組的容量,那麼就創建一個更大的新數組,並將當前數組中的所有元素都復制到新數組中。假設第一次是集合沒有任何元素,下面以插入一個元素為例看看源碼的實現。
1、方法add(E e)向集合中添加指定元素。 public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e; return true;
}2、此方法主要是確定將要創建的數組大小。 private void ensureCapacityInternal(int minCapacity) { if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
}
ensureExplicitCapacity(minCapacity);
} private void ensureExplicitCapacity(int minCapacity) {
modCount++; if (minCapacity - elementData.length > 0)
grow(minCapacity);
}3、最後是創建數組,可以明顯的看到先是確定了添加元素後的大小之後將元素復制到新數組中。 private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity >> 1); if (newCapacity - minCapacity < 0)
newCapacity = minCapacity; if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity); // minCapacity is usually close to size, so this is a win:
elementData = Arrays.Of(elementData, newCapacity);
}
LinkedList
同樣,我們打開LinkedList的源文件,不難看到LinkedList是在一個鏈表中存儲元素。
在學習數據結構的時候,我們知道鏈表和數組的最大區別在於它們對元素的存儲方式的不同導致它們在對數據進行不同操作時的效率不同,同樣,ArrayList與LinkedList也是如此,實際使用中我們需要根據特定的需求選用合適的類,如果除了在末尾外不能在其他位置插入或者刪除元素,那麼ArrayList效率更高,如果需要經常插入或者刪除元素,就選擇LinkedList。
2.Set
Set介面擴展自Collection,它與List的不同之處在於,規定Set的實例不包含重復的元素。在一個規則集內,一定不存在兩個相等的元素。AbstractSet是一個實現Set介面的抽象類,Set介面有三個具體實現類,分別是散列集HashSet、鏈式散列集LinkedHashSet和樹形集TreeSet。
散列集HashSet
散列集HashSet是一個用於實現Set介面的具體類,可以使用它的無參構造方法來創建空的散列集,也可以由一個現有的集合創建散列集。在散列集中,有兩個名詞需要關注,初始容量和客座率。客座率是確定在增加規則集之前,該規則集的飽滿程度,當元素個數超過了容量與客座率的乘積時,容量就會自動翻倍。
『肆』 java中各集合的用法
舉個例子吧
List list = new ArrayList();
還有其他的等等
『伍』 java集合有哪些
集合類型主要有3種:set(集)、list(列表)和map(映射)。
1、List(有序、可重復)
List里存放的對象是有序的,同時也是可以重復的,List關注的是索引,擁有一系列和索引相關的方法,查詢速度快。因為往list集合里插入或刪除數據時,會伴隨著後面數據的移動,所有插入刪除數據速度慢。
2、Set(無序、不能重復)
Set里存放的對象是無序,不能重復的,集合中的對象不按特定的方式排序,只是簡單地把對象加入集合中。
3、Map(鍵值對、鍵唯一、值不唯一)
Map集合中存儲的是鍵值對,鍵不能重復,值可以重復。根據鍵得到值,對map集合遍歷時先得到鍵的set集合,對set集合進行遍歷,得到相應的值。
(5)java中集合中有哪些方法擴展閱讀:
JAVA集合類型四種常見輸出方式:
1、Iterator:迭代輸出,是使用最多的輸出方式。
2、ListIterator:是Iterator的子介面,專門用於輸出List中的內容。
3、foreach輸出:JDK1.5之後提供的新功能,可以輸出數組或集合。
4、for循環。
代碼示例如下:
for的形式:for(inti=0;i<arr.size();i++){...}
foreach的形式:for(inti:arr){...}
iterator的形式:
Iterator it = arr.iterator();
while(it.hasNext()){ object o =it.next(); ...}
參考資料來源:網路:java集合類
『陸』 JAVA的集合類型有哪些
Java集合類型主要有3種:set(集)、list(列表)和map(映射)。
Collection、Set和List的區別如下:
Collection對象之間沒有指定的順序,允許有重復元素和多個null元素對象;它是Set和List介面的父類,是一種最通用型的集合介面;
Set各個元素對象之間沒有指定的順序,不允許有重復元素,最多允許有一個null元素對象;
List各個元素對象之間有指定的順序,允許重復元素和多個null元素對象;
『柒』 java的集合類都有哪些,主要方法
:查API文檔埃方法都差不多 存值取值 Set用迭代取值,List可以用迭代也可以用get(下標值),因為List是有順序的,Set沒有順序。Set的add()方法返回一個boolean值,因為不能重復嘛,重復放東西就返回false。Map要特殊一點,用put放東西。
『捌』 Java編程:你所知道的集合類都有哪些主要方法
看API啊,我主要用到的是list arrayList map hashmap
『玖』 java中集合類中各個類的區別和所運用的方法
查API文檔啊。方法都差不多 存值取值 Set用迭代取值,List可以用迭代也可以用get(下標值),因為List是有順序的,Set沒有順序。Set的add()方法返回一個boolean值,因為不能重復嘛,重復放東西就返回false。Map要特殊一點,用put放東西。有key 和value。通過key值來取對應的value值 Map還有一個方法EntrySet() 可以得到key和value映射的Set集合,然後通過getKey()和getValue()來取值。。List介面的實現類一般用ArrayList,看名字就知道跟數組差不多了,不過數組的大小是固定的,ArrayList大小可變。數組通過length屬性得到長度,集合是通過size()方法得到大小。Set介面的實現類一般用HashSet ,Map介面的實現類一般用HashMap。還一個TreeSet,它會根據從小到大排序集合中的對象 最後還是那句話 查文檔,再自己做做實驗什麼都知道了
補充點:vector 和hashtable 這兩個實現類對應的就是ArrayList 和 hashtable ,只不過這兩個是線程安全的,如果是多個線程要訪問集合,就用這兩個,如果是一個線程訪問的話就用後面兩個線程不安全的,效率更高點
『拾』 java集合set有哪些方法
set是一個介面,一般實現類用HashSet
方法摘要
boolean add(E e)
如果 set 中尚未存在指定的元素,則添加此元素(可選操作)。
boolean addAll(Collection<? extends E> c)
如果 set 中沒有指定 collection 中的所有元素,則將其添加到此 set 中(可選操作)。
void clear()
移除此 set 中的所有元素(可選操作)。
boolean contains(Object o)
如果 set 包含指定的元素,則返回 true。
boolean containsAll(Collection<?> c)
如果此 set 包含指定 collection 的所有元素,則返回 true。
boolean equals(Object o)
比較指定對象與此 set 的相等性。
int hashCode()
返回 set 的哈希碼值。
boolean isEmpty()
如果 set 不包含元素,則返回 true。
Iterator<E> iterator()
返回在此 set 中的元素上進行迭代的迭代器。
boolean remove(Object o)
如果 set 中存在指定的元素,則將其移除(可選操作)。
boolean removeAll(Collection<?> c)
移除 set 中那些包含在指定 collection 中的元素(可選操作)。
boolean retainAll(Collection<?> c)
僅保留 set 中那些包含在指定 collection 中的元素(可選操作)。
int size()
返回 set 中的元素數(其容量)。
Object[] toArray()
返回一個包含 set 中所有元素的數組。
<T>
T[] toArray(T[] a)
返回一個包含此 set
中所有元素的數組;返回數組的運行時類型是指定數組的類型。