一,集合的定義
集合跟陣列一樣都是一種容器。
集合,1長度可變,2只能儲存物件,3可以儲存任何型別的物件。
陣列,1,長度固定,2只能儲存基本型別的資料,3同一陣列中只能儲存同一種資料。
注意:1,集合和陣列中存放的都是物件的引用,而不是物件本身。
2,介面不能new,只能實現或繼承介面。例list ll=new list();這樣就會報錯可以將後面的list改為arraylist就正確了。
集合中的幾個介面collection,map,list,set.
3 ,在集合進行遍歷時,不能再遍歷中進行增刪改查操作,但是在迭代器中可以。
4,list可以放重複的null元素,因為null是物件,
5,arraylist和hashmap在使用時最好初始化大小,減少內部擴容。因為是陣列,所以初始化長度只能是2^n,最小是16,32,
6,hashmap的k可以存放null,但只能存放乙個,因為k不重複。
7,用介面定義功能,用實現功能,這種技術稱為解耦技術(解開耦合),集合正是使用了這種技術。用list等介面定義功能,用arraylist等實現類實現功能。
二,集合的分類及使用
1,collection介面通常不能直接使用,但是該介面提供了新增刪除管理資料的方法,由於list介面和set介面都實現了他的方法,因此這些方法對list和set集合都是通用的。collection中沒有set,get方法,但arraylist中有。
方法如下:
add(element e) 新增特定物件進集合
remove(object o) 移除
isempty()-----boolean 判斷集合是否為空
iterator()------iterator 返回迭代器用來遍歷集合中的物件
size()--------int 獲取集合元素的個數,即獲取集合長度
toarray(t[ ] a) 將集合轉化為陣列,返回引數指定的型別的陣列。
如果無參,返回的是object型別的陣列。
注意:collection的方法addall,containsall,removeall的方法都是集合。
2, list是有序可重複的集合,所以除了繼承collection的方法外,增加了一些根據索引操作集合元素的方法。
1,set( int index, e element)注意這裡element是修改後元素的值,但是此方法返回的值是要被修改的值。
2,get(int index) 查詢元素,可能下標越界。
3,indexof(object 0) 在集合尋找物件第一次出現的位置,沒有返回-1。
4,lastindexof(object 0) 在集合尋找物件最後一次出現的位置,沒有返回-1。
5,求子集合 listsublist(int fromindex, int toindex) // 不包含toindex
arraylist
底層資料結構是陣列,查詢快,增刪慢
執行緒不安全,效率高
vector
底層資料結構是陣列,查詢快,增刪慢,實現方式與arraylist相同
執行緒安全,效率低
linkedlist
底層資料結構是鍊錶,查詢慢,增刪快(因為只要改變指正所指的位址即可)
執行緒不安全,效率高
三者的區別:
1,初始容量都為10,但arraylist預設增長為原來的50%,原碼採用位運算。而vector預設增長為原來的一倍,並且可以設定
2,對於隨機訪問get和set(查詢操作),arraylist要優於linkedlist,因為linkedlist要移動指標
3,對於增刪操作(addi和remove),linkedlist優於arraylist
3,set無序不可重複
java集合框架
集合框架包括集合與對映 collection and map 以及它們的子類 容器類 1 list 元素有先後次序的集合,元素有index位置,元素可以重複,繼承自collection介面,實現類 arraylist,vector,linkedlist 2 set 元素無續,不能重複新增,是數學意義...
java集合框架
框架 為了解決某一特定的問題,預先設計好的一系列具有繼承或實現關係的類的介面。集合裡的三大類 list直接繼承collection 特點 線性,有序 arraylist底層的實現是陣列 使用範圍 當某一陣列在實際應用中大量使用查詢和新增功能的時候用arraylist linkedlist底層的實現是...
java 集合框架
集合一般使用list,set,map首先說下list 1.list一般使用arraylist,linkedlist list的特點有序,重複,那麼arraylist和linkedlist的區別 arraylist插入和刪除資料慢,取值速度快,實際上arraylist是陣列的擴充 linkedlist...