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