一驶冒、Iterable, Collection,list,Set, Map 都是接口
其余都是實(shí)現(xiàn)類
二件相、四個(gè)接口
1.collection
是List和Set接口的父接口 List中的方法很多繼承于collection
常用方法:增add ,刪 remove 财边,查 get() 獲得集合數(shù)據(jù)的個(gè)數(shù)size()肌括。
判斷是否含有contains()是否相等 equals();
2.List
接口存儲(chǔ)一組允許重復(fù)酣难,有序(插入順序)的對(duì)象谍夭,有下標(biāo),插入順序作為遍歷的順序
3.Set
接口存儲(chǔ)一組唯一憨募,無(wú)序的對(duì)象沒下標(biāo)插入的順序跟遍歷的順序是不一樣的Set接口中沒有自有方法紧索,全部繼承自Collection接口
4.Map
map中存儲(chǔ)是一存儲(chǔ)兩個(gè)值,鍵(key)和值(Value)合起來(lái)叫鍵值對(duì)(entry)map中鍵和值都可以為任何值(包括Null和集合)菜谣,但鍵不可以重復(fù)珠漂,值可以重復(fù)。
不是collection子接口尾膊,有獨(dú)有的方法媳危;
增put(key value) 刪 remove(key) 獲取get(key)
KeySet()把集合中的key提取到另一個(gè)集合中;
Values() 獲得集合中的值冈敛。
九個(gè)類
List ??包括Vector ?LinkedList ??ArryList
Set ??包括 HashSet ?LinkedHashSet ??TreeSet
Map ?包括 HashMap ?LinkedHashMap TreeMap
Vector
LinkedList
ArryList
HashSet
LinkedHashSet
TreeSet
HashMap
LinkedHashMap
TreeMap
線程安全
是
否
否
否
否
否
否
否
否
優(yōu)缺點(diǎn)
增刪慢
查找慢增刪快
查找慢增刪慢查找快
增刪查找速度都不錯(cuò)
但沒有下標(biāo)增刪查找速度都不錯(cuò)
但沒有下標(biāo)增刪查找速度都不錯(cuò)
但沒有下標(biāo)增刪查找速度都不錯(cuò)
但沒有下標(biāo)增刪查找速度都不錯(cuò)
但沒有下標(biāo)增刪查找速度都不錯(cuò)
但沒有下標(biāo)
數(shù)據(jù)結(jié)構(gòu)
數(shù)組
鏈表
數(shù)組
Hash表
Hash表
平衡二叉樹
Hash表
Hash表
平衡二叉樹
注釋:LinkedHashSet和HashSet的區(qū)別在于遍歷順序是否和插入順序一致
泛型
在集合中對(duì)集合進(jìn)行存儲(chǔ)數(shù)據(jù)時(shí)很方便待笑,但是取出來(lái)的時(shí)候不方便,為了便于存取抓谴,對(duì)可以對(duì)集合進(jìn)行限制暮蹂,就是讓集合可以存儲(chǔ)任意類型的數(shù)據(jù),但只能存儲(chǔ)一種癌压,這種限制的方式就是泛型
例如:
LinkedList Ls=new LinkedList<>(): 即這個(gè)集合中只能存儲(chǔ)String類型的數(shù)據(jù)仰泻,當(dāng)使用常用數(shù)據(jù)類型時(shí) 要注意泛型是他們的包裝類
迭代器
對(duì)存在集合中的數(shù)據(jù)進(jìn)行遍歷的時(shí)候長(zhǎng)用到迭代器,迭代器既可以遍歷有下標(biāo)的集合滩届,也可遍歷沒有下標(biāo)的結(jié)合我纪。迭代器的常規(guī)寫法
For(遍歷的數(shù)據(jù)的類型 存儲(chǔ)數(shù)據(jù):遍歷的數(shù)據(jù))
列如定義了一個(gè)HashSet集合,HashSetHs=new HashSet<>()
遍歷時(shí)for(String s:Hs){}
當(dāng)遍歷Map集合時(shí)丐吓,需要注意寫法
例如遍歷一個(gè)學(xué)籍管理集合
HashMap HS=new HashMap<>();時(shí)
for(Entry < Integer ,student >)e:Hs.entrySet()){}
比較器
用于自定義類之間的比較排序
具體代碼例子
Public class com1 implement Comparetor {
Public int (student s1 ,student s2)
//先比名字后比年齡
Int co =s1.getName().comparTo(s2.getName)//compareTo 返回的是一個(gè)int值根據(jù)int值得大小判斷排序
If(co==0)//當(dāng)兩值相等的時(shí)候,在進(jìn)行年齡的比較排序
{
Return s1.getAge()-s2.getAge;
}
Else return co;
}
先比成績(jī)?cè)賹?duì)名字進(jìn)行排序
Public class com2 ?implement Comparetor {
Public int (student s1 ,student s2)
//先比名字后比年齡
Int co =s1.getName().comparTo(s2.getName)//compareTo 返回的是一個(gè)int值根據(jù)int值得大小判斷排序
If(s1.getAge()-s2.getAge==0)//當(dāng)兩值相等的時(shí)候趟据,在進(jìn)行年齡的比較排序
{
Return s1.getName().comparTo(s2.getName)券犁;
}
Else {
return s1.getAge()-s2.getAge
}
}