陣列:之前使用陣列儲存資料
陣列只能存同意型別的資料
陣列長度一旦確定不能改變
陣列物件中基本沒有可用呼叫的方法來運算元組
陣列型別是使用 已有的型別+ 組合而成
集合:現在使用集合儲存資料
集合中能儲存任意型別的物件
集合的長度可以自動增長
集合物件本身有很多方法可以呼叫,來操作集合中的資料
集合是由api中定義好的介面和實現類組成的集合框架
同時,集合框架中還有很多不同特點的集合可以選擇使用
collection和map是集合框架中的倆大型別
collection型別的集合:
1.可以使用iterator迭代器
因為collection介面繼承了iterable介面
2.直接把資料單獨存放到集合中即可
3.collection介面有倆個常用的子介面
list
有序可重複
set無序不可重複
set下面有乙個子介面sortedset,允許使用者給集合中的元素進行排序
4.list介面常用的實現類
arraylist
陣列實現,通過下標訪問效率高,在集合的中間位置插入資料效率低。
linkedlist
鍊錶實現,通過下標訪問效率低,在集合的中間位置插入資料效率高。
vector
執行緒安全的集合。
5.set介面常用的實現類
hashset
內部呼叫hashmap來實現功能。
無序:需要使用資料的雜湊值來存放資料
不可重複
根據物件的hashcode和equals方法來確定物件是否重複
雜湊值不同,倆個物件就一定不同。
雜湊值相同,倆個物件有可能相同,也能不同,這時候再使用equals進一步確定是否相同。
treeset(實現的是sortedset介面,sortedset繼承了set介面)
內部呼叫treemap來實現功能。
可以給儲存到集合中的元素見排序。
自然排序
只要物件實現了comparable介面,物件中就一定乙個compareto方法,該方法可以比較倆個物件的大小。
通過方法的返回值是正數、負數、零來確定物件的大小或者相等。
treeset集合使用元素的compareto方法比較出倆個對的大小後,就可以從小到大給物件進行排序了
客戶化排序
可以在建立treeset集合的時候,在構造器的引數中,傳乙個比較器的物件comparator。
使用這個比較器,也可以比較出集合中倆個物件之間的大小。
這個時候即使物件沒有實現comparable介面也是可以比較的,因為這個比較器。
比較得出大小後,treeset依然可以從小到大給元素進行排序。
map型別的集合:
1.不能使用iterator迭代器
map介面沒有繼承iterable介面
2.需要使用key-value的方式來存放資料
3.map下面有乙個常用的子介面sortedmap
4.map介面的實現類
hashmap
通過key-value儲存資料
key不能重複,如果重複會覆蓋之前的資料,value可以重複,也就是需要保證key值無序不可重複。其實hashset的無序不可重複就是利用了hashmap中的key的這乙個特點來實現的。
key值是無序:
需要使用資料的雜湊值來存放資料
key值是不可重複的:
根據物件的hashcode和equals方法來確定物件是否重複
雜湊值不同,倆個物件就一定不同。
雜湊值相同,倆個物件有可能相同,也能不同,這時候再使用equals進一步確定是否相同。
hashtable 實現了map介面,它的效果和vector類似,都是執行緒安全的集合。
5.sortedmap介面的實現類
treemap
可以給key值進行排序:
自然排序
只要物件實現了comparable介面,物件中就一定乙個compareto方法,該方法可以比較倆個物件的大小。
通過方法的返回值是正數、負數、零來確定物件的大小或者相等。
treemap集合中的key使用物件中的compareto方法比較出倆個對的大小後,就可以從小到大給key進行排序了
客戶化排序
可以在建立treeset集合的時候,在構造器的引數中,傳乙個比較器的物件comparator。
使用這個比較器,也可以比較出集合中倆個物件之間的大小。
這個時候即使物件沒有實現comparable介面也是可以比較的,因為這個比較器。
比較得出大小後,treemap依然可以從小到大給key進行排序。
在集合中,掌握幾個核心:
1.怎麼利用介面和實現類建立出集合物件
collection c = new list介面或者set介面的實現類
list list = new 介面的實現類(arraylist linked vector)
set set = new set介面的實現類(hashset treeset)
map map = new map介面的實現類或者sortedmap介面實現類
hashmap treemap hashtable
2.怎麼往集合中新增資料
collection型別集合 add方法
map型別集合 put方法
3.怎麼從集合中刪除資料
remove方法
4.怎麼在集合中查詢資料
list型別集合 可以實現下標查詢資料 get方法
set型別集合 比較麻煩,沒有下標,可以從集合中乙個乙個拿出資料對比,看是否是自己想查詢的資料。
map型別集合,可以使用key直接獲取到對應的value
5.怎麼迴圈遍歷集合拿到每乙個元素
collection型別的集合都可以使用迭代器來迴圈拿到每個資料
list型別的集合除了迭代器的方式之外,還可以for迴圈結合下標的方式拿出每個資料
map型別的集合
keyset方法 取出所有key值
values方法 取出所有value值
entryset方法 取出所有的鍵值對
6.每種集合的特點
7.常用集合內部的實現方式
集合框架總結
list 儲存有序,有索引,可以重複 arraylist 底層是陣列實現的,執行緒不安全,查詢和修改快,增和刪較慢 linkedlist 底層是鍊錶實現的,現成不安全,增和刪較快,查詢和修改較慢 vector 底層是陣列實現的,現成安全,增刪改查都較慢 如何查詢和修改多,用arraylist 如果增...
集合框架總結
問題1 集合和陣列的區別?collection主要有三個子介面 set 表示不允許有重複元素的集合,且無序 list 表示允許有重複元素的集合,且有序 queue 佇列,先進先出,jdk1.5新增,queue主要用於儲存資料,而不是處理資料 stack 繼承自vector,實現乙個後進先出的堆疊。特...
集合框架學習總結
集合實際用來儲存物件 object 但需要注意的是,集合存放的實質上是物件的位址。接下來我們先來看一下集合框架圖,如下 同一顏色方框,我將它們視為同一級 首先由上圖確認一下它們的關係 collection 介面 set 介面 儲存元素特點 元素無序,元素不可以重複,與list集合體系本質區別就是無索...