Collection、泛型
目錄
一、集合
1.集合的介紹&集合和數(shù)組的區(qū)別
2.集合框架的介紹
二.集合的通用遍歷方式--迭代器
1.集合迭代器的介紹和使用
1.獲取集合的迭代器對象
2.遍歷集合
2.迭代器的原理(畫圖)
3.增強(qiáng)for循環(huán)
三.泛型
1.什么是泛型
2.泛型的好處
3.泛型的定義和使用
4.泛型統(tǒng)配符
5.泛型的上下限:受限泛型
一、集合
1.集合的介紹&集合和數(shù)組的區(qū)別
集合:是Java中一種容器,專門保存多個(gè)數(shù)據(jù)
數(shù)組:是Java中一種容器,專門保存多個(gè)數(shù)據(jù)
集合 優(yōu)于 數(shù)組:
a.數(shù)組長度是固定的 ,而集合長度是可變的
b.集合可以保存多種類型,數(shù)組只能保存同一種數(shù)據(jù)類型
int[] nums = new int[10];
ArrayList<Object> arr = new ArrayList<Object>();
arr.add("java");arr.add(10);
2.集合框架的介紹
JDK1.0 Java中只有Vector類
JDK1.5 由于集合類很多,共性向上(父類)抽取,形成一個(gè)集合框架
3.Collection中的通用方法
增: public boolean add(E e);
刪: public boolean remove(E e);
改: 無
查: 無
其他:
public void clear();//清空集合
public int size();//獲取集合的長度(元素的個(gè)數(shù))
?
public boolean isEmpty();//判斷集合是否為空(沒有元素)
public boolean contains(元素);//判斷集合是否包含指定元素
public Object[] toArray();//把集合轉(zhuǎn)成數(shù)組
?
二.集合的通用遍歷方式--迭代器
1.集合迭代器的介紹和使用
迭代器就是用來幫助我們遍歷任何一個(gè)Collection的實(shí)現(xiàn)類的
使用標(biāo)準(zhǔn)代碼:
1.獲取集合的迭代器對象
Iterator<集合的泛型> it = 集合對象.iterator();
2.遍歷集合
while(it.hasNext()){
集合的泛型 對象名 = it.next();
sout(對象名);
}
2.迭代器的原理(畫圖)
3.增強(qiáng)for循環(huán)
語法糖:
代碼上書寫更簡單,底層原理不變
數(shù)組的定義語法糖:
int[] nums = new int[]{1,2,3,4,5};
int[] nums = {1,2,3,4,5};
增強(qiáng)for循環(huán)就是迭代器的語法糖:
格式:
for(數(shù)據(jù)類型 變量名 : 數(shù)組/集合){
sout(變量名)
}
缺陷: 只能用于普通的集合遍歷,不能修改集合中元素,不能獲取集合元素的索引
?
三.泛型
1.什么是泛型
ArrayList<Integer> nums = new ArrayList<Integer>();
ArrayList<String> nums = new ArrayList<String>();
泛型: 是一種不確定的類型
格式: <E> <K,V>
2.泛型的好處
a.不使用泛型
i.需要手動(dòng)強(qiáng)制類型轉(zhuǎn)換
ii.編譯時(shí)不報(bào)錯(cuò),運(yùn)行時(shí)直接崩潰(類型轉(zhuǎn)換異常)
b.使用泛型
i.不需要手動(dòng)強(qiáng)制類型轉(zhuǎn)換
ii.運(yùn)行時(shí)異常 轉(zhuǎn)移到編譯時(shí), 變成了編譯失敗
在JDK1.5之后,Java是強(qiáng)烈建議使用泛型
3.泛型的定義和使用
i.泛型類: 泛型用在了類上
格式:
public class 類名<E>{}
在類中就是使用E這個(gè)泛型
private E a;
public void setA(E a){
this.a = a;
}
public E getA(){
return this.a;
}
}
使用:
類名<Integer> 對象名 = new 類名<Integer>();
類名<Double> 對象名 = new 類名<Double>();
類名<String> 對象名 = new 類名<String>();
?
ii.泛型方法: 泛型用在了方法上
格式:
public <T> void show(T s){
}
使用:
對象名.show(實(shí)際參數(shù));
泛型T代表 實(shí)際參數(shù)的具體類型
?
iii.泛型接口 : 泛型用在了接口上
格式:
public interface 接口名<E>{
public abstract void show(E a);
}
使用:
- a.實(shí)現(xiàn)類 在實(shí)現(xiàn)接口時(shí),直接確定接口中泛型的具體類型
格式:
public class 類名 implements 接口名<String>{
public void show(String a){
}
}
- b.實(shí)現(xiàn)類 在實(shí)現(xiàn)接口時(shí),不去確定泛型,而是繼續(xù)沿用泛型
格式:
public class 類名<E> implements 接口名<E>{
public void show(E a){
?
}
}
此時(shí)這個(gè)類就是一個(gè)泛型類,用法和泛型類就一樣
?
4.泛型統(tǒng)配符
泛型通配符: ?
什么作用:
當(dāng)實(shí)際參數(shù)的泛型有多種時(shí),形式參數(shù)的泛型就沒法確定
比如:
Collection<Integer> list1 = new ArrayList<Integer>();
Collection<String> list2 = new ArrayList<String>();
Collection<Double> list3 = new ArrayList<Double>();
方法:
public static void printArrayList(Collection<?> c) {}
那么我們使用泛型通配符去接收不同的泛型
printArrayList(list1);
printArrayList(list2);
printArrayList(list3);
?
5.泛型的上下限:受限泛型
上限: <? extends Animal>: 代表 泛型必須是Animal 或者 Animal 的子類
?
下限: <? super Dog>: 代表 泛型必須是Dog 或者Dog的父類
?
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Collection、泛型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Object类和常用API
- 下一篇: List、Set