集合框架 Collection
為什么會出現(xiàn)這么多的容器呢帚湘?
因為每一個容器對數(shù)據(jù)的存儲方式都有不同玫荣。
這種存儲方式稱之為:數(shù)據(jù)結(jié)構(gòu)。
1大诸,add方法的參數(shù)類型是Object捅厂。以便于接受任意類型對象。
2资柔,集合中存儲的都是對象的引用(地址)
Collection
|--List:元素是有序的焙贷,元素可以重復(fù),因為該集合體系有索引贿堰。
|--ArrayList:底層的數(shù)據(jù)結(jié)構(gòu)使用的是數(shù)組結(jié)構(gòu)辙芍。特點:查詢速度很快。但是增刪稍慢羹与。線程不同步故硅。
|--LinkedList:底層使用的鏈表數(shù)據(jù)結(jié)構(gòu)。增刪速度很快纵搁,查詢速度慢吃衅。
|--vector:底層是數(shù)組數(shù)據(jù)結(jié)構(gòu)。線程同步诡渴,被ArrayList替代了。
|--Set:元素是無序的(存入和取出不一定一致),元素不可以重復(fù)妄辩。
Set集合的功能和Collection是一致的惑灵。
|--HashSet:底層數(shù)據(jù)結(jié)構(gòu)是哈希表。
HashSet是如何保證元素唯一性的呢眼耀?
是通過元素的兩個方法英支,hashCode和equals來完成。
如果元素的HashCode值相同哮伟,才會判斷equals是否為true干花。
如果元素的hashCode值不同,不會調(diào)用equals楞黄。
注意:對于判斷元素是否存在池凄,以及刪除等操作,依賴的方法是元素的hashCode和equals方法鬼廓。
|--TreeSet:可以對Set集合中的元素進(jìn)行排序肿仑。