日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Collection、泛型

發(fā)布時(shí)間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Collection、泛型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

一、集合

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。