linq判断集合中相同元素个数_JavaSe集合的概念以及集合框架介绍
###集合
今天任務(wù)
1.概念1.1 集合的概念1.2 集合的框架結(jié)果介紹1.3 集合和數(shù)組的對(duì)比 2.Collection接口2.1 Collections中常用的方法 3.泛型3.1 什么是泛型3.2 泛型的聲明3.3 說明3.4 泛型使用時(shí)的注意事項(xiàng)3.5 受限泛型3.6 泛型應(yīng)用在集合上 4.Iterator迭代器4.1 迭代器的工作原理4.2 迭代器的使用 5.List接口5.1 List接口的存儲(chǔ)特點(diǎn)5.2 List接口的實(shí)現(xiàn)類教學(xué)目標(biāo)
1.掌握集合的概念以及和數(shù)組的對(duì)比 2.了解集合的框架 3.了解Collection接口中的常用方法 4.了解泛型的使用及注意事項(xiàng) 5.掌握Iterator的工作原理以及使用 6.掌握List接口的存儲(chǔ)特點(diǎn) 7.掌握ArrayList的使用 8.了解LinkedList、Vector和Stack的使用第一節(jié) 概念
#####1.1 集合的概念
集合與數(shù)組一樣,也是一個(gè)容器,與數(shù)組不同的是,集合的長(zhǎng)度不定,可以無限的想集合中添加元素,而且集合中存儲(chǔ)的元素類型可以隨意#####1.2 集合的框架結(jié)構(gòu)介紹
Collection集合的框架結(jié)構(gòu)Map集合的框架結(jié)構(gòu)#####1.3 集合與數(shù)組的對(duì)比
相同點(diǎn):
都是數(shù)據(jù)的容器,在一個(gè)數(shù)組或集合中可以聲明(存儲(chǔ))多個(gè)數(shù)據(jù)不同點(diǎn):
元素:數(shù)組中的元素只能是相同(相兼容類型)集合中的元素是任意的(泛型) ? 數(shù)組中可以存儲(chǔ)基本類型和引用類型,集合只能存儲(chǔ)引用類型 ? 長(zhǎng)度(元素個(gè)數(shù)):數(shù)組是定長(zhǎng)的,一旦初始化長(zhǎng)度就不可以修改集合長(zhǎng)度可以修改,可以刪除元素和添加元素####第二節(jié) Collection接口
#####2.1 Collection中常用的方法
方法名描述add(E e)確保此 collection 包含指定的元素(可選操作)。addAll(Collection<? extends E> c)將指定 collection 中的所有元素都添加到此 collection 中(可選操作)。clear()移除此 collection 中的所有元素(可選操作)。contains(Object o)如果此 collection 包含指定的元素,則返回true。containsAll(Collection<?> c)如果此 collection 包含指定 collection 中的所有元素,則返回 true。equals(Object o)比較此 collection 與指定對(duì)象是否相等。isEmpty()如果此 collection 不包含元素,則返回true。iterator()返回在此 collection 的元素上進(jìn)行迭代的迭代器。remove(Object o)從此 collection 中移除指定元素的單個(gè)實(shí)例,如果存在的話(可選操作)。removeAll(Collection<?> c)移除此 collection 中那些也包含在指定 collection 中的所有元素(可選操作)。retainAll(Collection<?> c)僅保留此 collection 中那些也包含在指定 collection 的元素(可選操作)。size()返回此 collection 中的元素?cái)?shù)。toArray()返回包含此 collection 中所有元素的數(shù)組。
####第三節(jié) 泛型
3.1 什么是泛型
泛型就是可以表示一個(gè)廣泛數(shù)據(jù)類型的類型參數(shù)(泛型只能表示引用類型) 形式參數(shù):聲明方法時(shí),在方法的參數(shù)列表中聲明,而且在方法體中會(huì)使用到,但是是一個(gè)未知的數(shù)據(jù) 類型參數(shù):在一個(gè)類中聲明一個(gè)未知的數(shù)據(jù)類型,在類中可以使用這個(gè)類型,但是具體類型取決于實(shí)例化時(shí)傳入的實(shí)際類型3.2 泛型的聲明
1)泛型可以聲明在方法中:(泛型方法) public static <標(biāo)識(shí)符> void fun(){} ? 2)泛型可以聲明在類中:(泛型類) public class 類名<標(biāo)識(shí)符>{//類體//泛型可以在類中充當(dāng)成員變量//泛型可以再類中充當(dāng)方法的返回值//泛型可以在類中充當(dāng)方法的參數(shù) } ? 3)泛型可以聲明在接口中:(泛型接口) public interface 接口名<標(biāo)識(shí)符>{//成員//泛型可以充當(dāng)接口中方法的返回值//泛型可以充當(dāng)接口中方法的參數(shù) }3.3 說明
1)標(biāo)識(shí)符:只要是一個(gè)合法的標(biāo)識(shí)符即可,一般情況下,只使用一個(gè)大寫字母表示泛型 例:public class Person<T>{} 2)泛型的類型與聲明的類或接口不需要有任何的關(guān)系 3)泛型可以在類中充當(dāng)任何的成員 4)泛型具體類型取決于實(shí)例化對(duì)象時(shí)傳入的實(shí)際類型3.4 泛型使用時(shí)的注意事項(xiàng)
1)泛型不能在類中聲明靜態(tài)常量屬性 final修飾的屬性必須在聲明的同時(shí)初始化,所以泛型不能聲明常量 static修飾的屬性是靜態(tài)屬性,先于對(duì)象,泛型類型取決于創(chuàng)建對(duì)象時(shí)傳入的實(shí)際類型,所以泛型不能聲明靜態(tài)屬性 綜上所述:不能使用泛型聲明靜態(tài)常量屬性 ? 2)泛型不能在類中初始化數(shù)組,但是可以聲明數(shù)組 初始化數(shù)組時(shí)需要給元素進(jìn)行分配空間,但是泛型類型不確定無法分配空間 ? 3)在類中不能使用泛型聲明參數(shù)個(gè)數(shù)相同的重載方法 當(dāng)一個(gè)類中有兩個(gè)泛型時(shí),創(chuàng)建對(duì)象時(shí),兩個(gè)泛型使用相同類型替換,那么重載方法就是相同的方法(同名,參數(shù)列表也相同) ? 4)使用不同實(shí)際類型創(chuàng)建出的泛型類對(duì)象的引用不可以相互賦值3.5 受限泛型
1)<? extends T>:表示T類或者T類的子類 2)<? super T>:表示T類或者T類的父類 3)<?>:表示任意類型#####3.6 泛型應(yīng)用在集合上
泛型在集合中應(yīng)用,表示的是集合中元素的類型####第四節(jié) Iterator迭代器
#####4.1 迭代器的工作原理
迭代器相當(dāng)于一個(gè)游標(biāo),最初獲取迭代器時(shí),迭代器的位置在所有元素的前面,每迭代一個(gè)元素,迭代器向后移動(dòng)一個(gè)位置#####4.2 迭代器的使用
方法名描述hasNext()判斷迭代器是否存在下一個(gè)元素可以迭代器next()迭代器迭代下一個(gè)元素remove()從迭代器指向的 collection 中移除迭代器返回的最后一個(gè)元素(可選操作)。
####第五節(jié) List接口
方法名描述add(int index, E element)在列表的指定位置插入指定元素(可選操作)。addAll(int index, Collection<? extends E> c)將指定 collection 中的所有元素都插入到列表中的指定位置(可選操作)。containsAll(Collection<?> c)如果列表包含指定 collection 的所有元素,則返回true。get(int index)返回列表中指定位置的元素。indexOf(Object o)返回此列表中第一次出現(xiàn)的指定元素的索引;如果此列表不包含該元素,則返回 -1。lastIndexOf(Object o)返回此列表中最后出現(xiàn)的指定元素的索引;如果列表不包含此元素,則返回 -1。listIterator()返回此列表元素的列表迭代器(按適當(dāng)順序)。remove(int index)移除列表中指定位置的元素(可選操作)。set(int index, E element)用指定元素替換列表中指定位置的元素(可選操作)。subList(int fromIndex, int toIndex)返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之間的部分視圖。
#####5.1 List接口的存儲(chǔ)特點(diǎn)
相對(duì)有序存儲(chǔ),可以存儲(chǔ)相同元素(不排重),可以通過下標(biāo)訪問集合元素 List接口中可以使用獨(dú)有的迭代器ListIterator,具有反向遍歷的功能#####5.2 List接口的實(shí)現(xiàn)類
5.2.1 ArrayList類
ArrayList類是List接口的大小可變數(shù)組的實(shí)現(xiàn)。實(shí)現(xiàn)了所有可選列表操作,并允許包括null在內(nèi)的所有元素。 ? 存儲(chǔ)特點(diǎn):相對(duì)有序存儲(chǔ),可以存儲(chǔ)相同元素(不排重),可以通過下標(biāo)訪問集合元素,通過數(shù)組實(shí)現(xiàn)的集合代碼實(shí)現(xiàn):
public class ArrayListDemo {public static void main(String[] args) {//創(chuàng)建一個(gè)ArrayList集合ArrayList<String> list = new ArrayList<>();//構(gòu)造方法中的泛型可以省略list.add("zhangsan");//向集合中添加元素list.add("lisi");list.add("wangwu");System.out.println(list.isEmpty());//判斷l(xiāng)ist集合是否為空集合System.out.println(list.size());//查看集合中元素的個(gè)數(shù)System.out.println(list.get(1));//獲取集合中下標(biāo)為1的元素System.out.println(list.set(1,"zhaoliu"));//修改集合中下標(biāo)為1的元素System.out.println(list.contains("wangwu"));//查看"wangwu"是否是集合中的元素list.remove("wangwu");//刪除集合中"wangwu"元素list.remove(1);//刪除集合中下標(biāo)為1的元素//for循環(huán)遍歷集合for(int i=0; i<list.size(); i++){System.out.println(list.get(i));}//使用Iterator迭代器遍歷Iterator<String> it = list.iterator();//獲取迭代器while(it.hasNext()){System.out.println(it.next());}//使用ListIterator迭代器遍歷ListIterator<String> lit = list.listIterator();while(lit.hasNext()){System.out.println(lit.next());}//反向遍歷while(lit.hasPrevious()){System.out.println(lit.previous());}} }5.2.2 LinkedList類
LinkedList類是List接口的鏈接列表實(shí)現(xiàn)。實(shí)現(xiàn)所有可選的列表操作,并且允許所有元素(包括null)。 存儲(chǔ)特點(diǎn):相對(duì)有序存儲(chǔ),可以存儲(chǔ)相同元素(不排重),可以通過下標(biāo)訪問集合元素,通過鏈表實(shí)現(xiàn)的集合 ? LinkedList集合適用在對(duì)元素插入和刪除操作較頻繁的時(shí)候 ArrayList集合適用在對(duì)元素查詢操作較頻繁的時(shí)候5.2.3 Vector
Vector類可以實(shí)現(xiàn)可增長(zhǎng)的對(duì)象數(shù)組。與數(shù)組一樣,它包含可以使用整數(shù)索引進(jìn)行訪問的組件。但是Vector 的大小可以根據(jù)需要增大或縮小,以適應(yīng)創(chuàng)建 Vector后進(jìn)行添加或移除項(xiàng)的操作。5.2.4 Stack
Stack類表示后進(jìn)先出(LIFO)的對(duì)象棧。是Vector的子類。5.2.5 ArrayList與LinkedList,Vector三種實(shí)現(xiàn)類存儲(chǔ)的比較
a.在用法上和ArrayList完全相同【Vector就是ArrayList的前身】 ? b.底層存儲(chǔ)采用的數(shù)據(jù)結(jié)構(gòu)是數(shù)組 c.Vector是一個(gè)古老的集合,從JDK1.0開始就有了,Vector存在一些方法名比較長(zhǎng)的方法,xxxxElement d.Vector是線程安全的,效率低 ? ArrayLIst是線程不安全的,效率高,推薦使用ArrayList【Collections工具類中有相應(yīng)的方法可以將ArrayList改為線程安全的】總結(jié)
以上是生活随笔為你收集整理的linq判断集合中相同元素个数_JavaSe集合的概念以及集合框架介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络技术基础教学内容,计算机网络技
- 下一篇: java 线程类 通信_Java 中利用