更新時(shí)間:2018年08月06日14時(shí)24分 來(lái)源:傳智播客 瀏覽次數(shù):
(1)迭代器:
**迭代器的next方法是自動(dòng)向下取元素,要避免出現(xiàn)NoSuchElementException。
也就是在迭代循環(huán)中調(diào)用一次next方法一次就要hasNext判斷一次,比如語(yǔ)句
sop(it.next()+"..."+it.next())會(huì)發(fā)生上述異常。
**迭代器的next方法返回值類(lèi)型是Object,所以要記得類(lèi)型轉(zhuǎn)換,應(yīng)用泛型后就不用強(qiáng)轉(zhuǎn)
(2)List集合:
**List集合里面的元素因?yàn)槭菐Ы菢?biāo),所以List集合里面的元素都是有序的,
另外List集合可以包含重復(fù)元素,也可以包含null。
**List集合有迭代器Iterator,還有一個(gè)特有迭代器列表ListIterator
**List集合中判斷元素是否相同都是用equals方法,無(wú)論contains、remove都依賴(lài)equals方法
比如往ArrayList集合里面存放學(xué)生,同名同年齡視為同一個(gè)人,此時(shí)就需要在學(xué)生類(lèi)復(fù)寫(xiě)Object類(lèi)
里面的equals方法(非常重要!!!要注意!!)
(3)Set集合:
**Set接口里面存放的是元素是無(wú)序的,不可以有重復(fù)元素,可以包含null
**Set集合只有一種取出方式,就是迭代器Iterator
**Set集合功能和Collection是一致的,沒(méi)有特殊方法
|--->HashSet:
**集合里面存放的元素是無(wú)序的,唯一的
**底層數(shù)據(jù)結(jié)構(gòu)是哈希表,哈希表結(jié)構(gòu)的數(shù)據(jù)都是無(wú)序的,哈希表結(jié)構(gòu)的操作效率都高效
**線程不同步
**保證元素唯一性的原理是:通過(guò)復(fù)寫(xiě)hashCode和equals方法
****如果兩元素的hashCode值相同,則繼續(xù)判斷兩元素equals是否為真
****如果兩元素的hashCode值不同,則不會(huì)調(diào)用equals方法。
**當(dāng)我們往HashSet集合存放自定義的元素時(shí)(比如學(xué)生對(duì)象),通常都要復(fù)寫(xiě)hashCode和equals方法,
而且hashCode和equals方法不通過(guò)我們調(diào)用,HashSet集合底層內(nèi)部自己調(diào)用,自己拿元素去比較
|--->TreeSet
**TreeSet集合可以對(duì)存放的元素進(jìn)行排序,彌補(bǔ)了Set集合元素?zé)o序的缺點(diǎn),且元素是唯一的
**底層數(shù)據(jù)結(jié)構(gòu)是二叉樹(shù),二叉樹(shù)結(jié)構(gòu)都是有序的
**線程不同步
**TreeSet集合要求往集合里存放的元素自身具備比較性,否則會(huì)報(bào)錯(cuò)
**TreeSet集合保證元素唯一性的依據(jù)是:通過(guò)compareTo或者compare方法中的來(lái)保證元素的唯一性。
TreeSet排序的第一種方式:讓元素自身具備比較性,
定義元素類(lèi)實(shí)現(xiàn)Compareble接口,覆蓋compare方法,
此方式是元素的自然順序。
TreeSet排序的第二種方式:讓集合具備比較性
當(dāng)元素自身不具備比較性或者具備的比較性不是
我們所需要的比較性時(shí),此時(shí)就需要讓集合具備自定義的比較性。
那如何讓集合自身具備比較性呢?
可在集合初始化時(shí),就讓集合具備比較方式。
即定義一個(gè)類(lèi),實(shí)現(xiàn)Comparator接口,覆蓋compare方法。
注:
**判斷元素唯一時(shí),當(dāng)主要條件一樣時(shí),判斷次要條件
**兩種排序方式都在時(shí),以比較器為主!!!
(4)Map集合:
|--Hashtable
底層是哈希表結(jié)構(gòu)
線程安全的,并且鍵和值不能為null。
|--HashMap
底層是哈希表結(jié)構(gòu)
線程不安全的,鍵和值可以為null。
|--LinkedHashMap
底層是鏈表和哈希表
線程不安全
|--TreeMap
底層是二叉樹(shù)
線程不安全的
作者:傳智播客JavaEE培訓(xùn)學(xué)院
首發(fā):http://java.itcast.cn/
北京校區(qū)