Java基礎 集合框架

2021-07-30 07:46:23 字數 1267 閱讀 5711

集合框架中主要分兩大介面:

list介面下兩個最常使用的實現類是:arraylist和linkedlist

1.arraylist底層是動態陣列實現的,初始化容量是10,當呼叫add()方法時判斷若是達到最大容量則擴容(1.5倍 + 1)。新增資料時直接新增在末尾。特點是:查詢資料效率高,插入刪除效率低。

2.linkedlist底層是迴圈雙鏈表實現的,add()方法新增物件實際上新增的是乙個entry物件,這個entry物件包含了前驅、後繼、資料資訊。特點是插入刪除效率高,查詢效率低。

set介面下常使用的實現類是:hashset

所謂set就是集合的意思,數學的集合有3個特點:a.確定性 b.互異性 c.無序性

同樣set也有這3個特點,即set中的元素不能重複,存入和取出的順序不一定。

1.hashset是set介面下用得最多的實現類。它的底層其實是hashmap是實現的,hashmap的key不能重複同時也無序,所以用hashmap的key來實現hashset再好不過。具體做法是把hashp中的value都對映到乙個object型別的常量即可。

注意:當使用hashset儲存物件時,hashcode()方法就會得到呼叫,判斷已經儲存在集合中的物件hash code值是否與增加的hash code值一致;a.如果不一致,直接加進去;b.如果一致,再進行equals()方法的比較,equals()方法如果返回true,表示物件已經加進去了,就不會再去加進這個物件;如果為false,則加進去。

所以在絕大多數情況下我們只要重寫了hashcode()方法,就要同時重寫equals()方法;反過來也一樣,重寫了equals()方法,也要一併重寫hashcode()方法,它倆總是相輔相成,主要用在這裡,即判斷到底能不能往set裡新增。(如果不同時重寫的話,則往set裡新增時會出錯)

2.treeset是sortedset的乙個實現類,用treeset新增元素會自動排序,基本資料型別和string直接add()方法新增就好。

但是其他自定義的引用型別新增時,則需要給treeset指定乙個排序規則,即實現compartor介面裡的compare()方法,並把這個實現了compartor介面的物件傳給treeset,treeset才知道怎麼排序(treeset在add()時會呼叫這個排序規則),否則執行時會報錯:classcastexception

Java集合框架 基礎框架

可以看到集合的基礎介面是map,collection以及iterator。其餘的類都實現自這3個類。public inte ce iterator 舉個簡單例子 把集合裡的元素每個都輸出出來 listnames new arraylist names.add joemsu names.add god...

Java基礎 集合框架《二》

map與collection在集合框架是並列存在的。map儲存的是鍵對值。一對一對往裡存,而且要保證鍵的唯一性。map儲存元素使用的是put方法,collection使用的是add方法。map集合沒有直接取出元素的方法,而是先轉換成set集合,再通過迭代器獲取元素。map hashtable 底層是...

Java集合框架基礎 排序

排序示例 以下所有需要匯入的包,假設已經匯入 1.通過collections.sort 方法排序 public class collectionssort while integerlist.contains k integerlist.add k system.out.println 成功新增 k...