
集合也就是Java的一種存儲(chǔ)的容器,與數(shù)組不同的是,數(shù)組既可以存儲(chǔ)基本數(shù)據(jù)類型又可以存儲(chǔ)對(duì)象,而集合只可以存儲(chǔ)對(duì)象。另外,數(shù)組的長度不可更改,集合可以實(shí)時(shí)更改。
Collection集合常用的方法:
boolean add(E e);? ? ?向集合中添加元素
boolean remove(E e);刪除集合中的某個(gè)元素

void clear();? ? ? ? ? ? ? ? 清空集合所有元素
boolean contains(E e); 判斷集合內(nèi)是否包含某個(gè)元素
boolean isEmpty():判斷集合是否為空
int size();獲取集合的長度
Object[] toArray();將集合轉(zhuǎn)換為一個(gè)數(shù)組,之后強(qiáng)制類型轉(zhuǎn)換。
1.集合可以使用增強(qiáng)for循環(huán),其是用迭代器實(shí)現(xiàn)的,所有的collection都可用,能夠遍歷完集合。
2.創(chuàng)建集合,不使用泛型,默認(rèn)就是Object,?泛型通配符,用來接收不確定的數(shù)據(jù)類型,只用來做方法的參數(shù)。

泛型的上限限定 ? extends E 使用的泛型只能是E類型的子類和本身
泛型的下限限定 ? super E 使用的泛型只能是E類型的父類和本身


今日的發(fā)現(xiàn):println函數(shù)(),的參數(shù)即便是Object,他也可以打印出該對(duì)象實(shí)際的類,并按該類的toString 方法輸出。直接可以通過instanceof判斷Object 是可以到底是那個(gè)對(duì)象的實(shí)例,好方便。
Colletctions:工具類
shuffle() 打亂排序 sort() reverse fill copy min max indexOfSubList ……
sort(List)使用的前提是重寫元素的Comparable,重寫接口中方法的compareTo定義排序的規(guī)則。
Sort(List,Compartor):
ArrayList:元素增刪慢、查找快,底層用數(shù)組實(shí)現(xiàn)
Vector 早期的單列集合,如今也實(shí)現(xiàn)了Collection接口,是單線程的。
LinkedList:查詢慢、增刪快、包含大量操作首尾的方法,底層是用鏈表來實(shí)現(xiàn)的。
HashSet:不允許重復(fù)元素、沒有索引、無序、底層是哈希表(數(shù)組+鏈表+紅黑樹)。
LinkedHashSet:底層是哈希表加個(gè)鏈表,保證有序。
Map和Collection并無關(guān)系,一個(gè)是雙列集合,一個(gè)是單列集合
Map抽象類:子類HashMap、LinkedHashMap有序的
keySet()? entrySet()? put(key,value) get(key)
HashTable :也是雙列集合、線程安全,早期雙列集合的實(shí)現(xiàn)方式。
Iterable接口:實(shí)現(xiàn)這個(gè)接口允許對(duì)象成為 "foreach" 語句的目標(biāo)。主要方法有iterator()獲取實(shí)現(xiàn)iterator接口的對(duì)象,通過next()和hasNext()實(shí)現(xiàn)循環(huán)遍歷。
JDK9.0新特性:
List、Map、Set:實(shí)現(xiàn)了of方法,一次性添加多個(gè)對(duì)象,返回的結(jié)果是不可以改的,只能通過List、Map、Set三個(gè)接口類來調(diào)用,并不能用實(shí)現(xiàn)類。好像覺得,有稍稍不知道什么情況適合使用,慢慢看吧。