1.arraylist只存對象類型
2.collection頂層接口,一路是list(arraylist,linkedlist),一是set(hashset,linkedhashset)
3.list有序可重復(fù)元素,set無序不可有重復(fù)元素
4.僅有三種長度方法·:array.length(),Stirng.length(),集合.size()
5.toarray()集和轉(zhuǎn)成數(shù)組,集合是可變數(shù)組,數(shù)組存入數(shù)據(jù)就不可變了
6.remove刪除指定元素,如有相同元素就刪除遇到的第一個
7.迭代器iterator
- 迭代器本身就是遍歷:判斷有沒有(hasnext)下一位,有就返回true,之后將指針置于下一位并將元素取出來(next)
- iterator it=new ArrayList().iterator()拿到接口實(shí)現(xiàn)類
while (it.hasNext()) {//hasnext判斷下一位有沒有,默認(rèn)是在-1位
it.next();
//next一是把數(shù)組元素返出,一是將指針指到下一位hasnext本身不會移動指針
}
- 迭代器僅能使用一次
- for比while節(jié)省內(nèi)存但選while代碼簡潔
- collection若不寫類型就object什么都可以存
- jdk1.5之后增強(qiáng)for
arrlist<Integer> arr=new arraylist<integer>();
for (Integer a : arr) {
}
a被數(shù)組元素賦值但本身和數(shù)組本身無關(guān)
增強(qiáng)for不能操作數(shù)組無索引
8.泛型,克服安全問題(強(qiáng)轉(zhuǎn)出錯)指定集合存儲數(shù)據(jù)類型
- java中泛型是偽泛型,僅在編譯中存在,在編譯后的運(yùn)行class文件沒有泛型存在
- public class Arrlist<E> e指element變量,帶泛型的類
- add是帶泛型的方法
- E可以后期指定也可以直接指定
9.文件通配符.指任何文件
- 泛型通配符
public void work(?){}
public void work(? extends Person){}//父類是person,子類不確定,可傳本類也可傳子類,泛型上限限定
public void work(?super Person){}子類是Person,父類不確定,傳父類傳本身,泛型下線限定
限定之后可以保證父類方法調(diào)用不出錯