版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
java程序設計-10-集合2023-2026ONEKEEPVIEWREPORTINGWENKUDESIGNWENKUDESIGNWENKUDESIGNWENKUDESIGNWENKU目錄CATALOGUE集合概述List接口及其實現(xiàn)類Set接口及其實現(xiàn)類Map接口及其實現(xiàn)類迭代器與foreach循環(huán)泛型在集合中的應用集合操作技巧與注意事項集合概述PART01集合(Set)是Java中提供的一種數(shù)據(jù)結構,用于存儲不重復元素的集合。集合定義無序性互異性確定性集合中的元素沒有固定的順序,不能通過索引訪問。集合中的元素必須是唯一的,不允許出現(xiàn)重復元素。給定一個元素和一個集合,該元素要么屬于該集合,要么不屬于該集合,二者必居其一。集合定義與特點接口Java集合框架主要包括三個接口,分別是Set、List和Queue。其中,Set接口表示不允許出現(xiàn)重復元素的集合;List接口表示有序集合,可以通過索引訪問元素;Queue接口表示隊列,用于通過特定的插入和刪除操作對元素進行排隊。實現(xiàn)類Java集合框架提供了多個實現(xiàn)類,如HashSet、TreeSet、ArrayList、LinkedList等,這些類分別實現(xiàn)了Set、List和Queue接口,并提供了豐富的操作方法來管理集合中的元素。迭代器迭代器(Iterator)是一種設計模式,用于遍歷容器(特別是列表和集合)。Java集合框架中的Iterator接口提供了遍歷任何Collection的通用方法。集合框架體系結構LinkedListLinkedList是List接口的另一個實現(xiàn)類,它采用雙向鏈表數(shù)據(jù)結構來存儲元素。LinkedList支持高效的插入和刪除操作,但隨機訪問效率較低。HashSetHashSet是Set接口的一個實現(xiàn)類,它不允許出現(xiàn)重復元素,并且不保證元素的順序。HashSet是基于HashMap實現(xiàn)的,其底層采用哈希表數(shù)據(jù)結構。TreeSetTreeSet是Set接口的另一個實現(xiàn)類,它使用紅黑樹數(shù)據(jù)結構來存儲元素。TreeSet會對元素進行排序,排序規(guī)則可以是自然排序或者自定義排序。ArrayListArrayList是List接口的一個實現(xiàn)類,它是有序的集合,可以包含重復元素。ArrayList底層采用數(shù)組實現(xiàn),支持快速隨機訪問。常用集合類介紹List接口及其實現(xiàn)類PART02List接口存儲的元素是有序的,即元素的插入順序和迭代順序一致。有序集合List接口允許存儲重復的元素??芍貜驮豅ist接口提供了通過索引訪問元素的方法,如get(intindex)和set(intindex,Eelement)??赏ㄟ^索引訪問List接口提供了豐富的操作方法,如add(Eelement)、remove(Objecto)、size()等。常用方法List接口特點與常用方法ArrayList類原理及使用示例原理:ArrayList類是基于數(shù)組實現(xiàn)的List接口,內部封裝了一個動態(tài)數(shù)組。當添加元素時,如果數(shù)組已滿,則會創(chuàng)建一個新的更大的數(shù)組,并將原有數(shù)組的元素復制到新數(shù)組中。這種實現(xiàn)方式使得ArrayList在訪問元素時具有較高的性能,但在添加或刪除元素時可能需要較大的開銷。ArrayList類原理及使用示例010203```javaList<String>list=newArrayList<>();使用示例123list.add("Hello");list.add("World");System.out.println(list.get(0));//輸出"Hello"ArrayList類原理及使用示例03```01list.set(1,"Java");02System.out.println(list.get(1));//輸出"Java"ArrayList類原理及使用示例原理:LinkedList類是基于雙向鏈表實現(xiàn)的List接口。每個元素都包含指向前一個元素和后一個元素的引用。這種實現(xiàn)方式使得LinkedList在添加或刪除元素時具有較高的性能,但在訪問元素時可能需要較大的開銷,因為需要從鏈表頭或尾開始遍歷。LinkedList類原理及使用示例使用示例List<String>list=newLinkedList<>();```javaLinkedList類原理及使用示例LinkedList類原理及使用示例01list.add("Hello");02list.add("World");System.out.println(list.get(0));//輸出"Hello"0301list.set(1,"Java");02System.out.println(list.get(1));//輸出"Java"03//使用LinkedList特有的方法LinkedList類原理及使用示例LinkedList類原理及使用示例LinkedList類原理及使用示例01linkedList.addFirst("Start");02linkedList.addLast("End");03System.out.println(linkedList);//輸出["Start","Hello","Java","End"]04```Set接口及其實現(xiàn)類PART03Set接口繼承自Collection接口,用于存儲不重復的元素集合。其主要特點包括元素無序、不可重復以及不支持索引。特點Set接口提供了一系列常用方法,如`add()`用于添加元素,`remove()`用于刪除元素,`contains()`用于判斷元素是否存在,`size()`用于獲取集合大小等。常用方法Set接口特點與常用方法HashSet類原理及使用示例原理:HashSet是基于哈希表實現(xiàn)的,元素無序且不可重復。它通過計算元素的哈希值來確定元素在集合中的存儲位置,從而實現(xiàn)快速查找和刪除操作。010203使用示例```javaSet<String>set=newHashSet<>();HashSet類原理及使用示例HashSet類原理及使用示例set.add("apple");set.add("banana");set.add("orange");System.out.println(set);//輸出:[apple,banana,orange]```HashSet類原理及使用示例原理:TreeSet是基于紅黑樹實現(xiàn)的,元素有序且不可重復。它通過對元素進行排序來保證元素的順序性,同時支持范圍查找等操作。TreeSet類原理及使用示例使用示例```javaSet<Integer>set=newTreeSet<>();TreeSet類原理及使用示例TreeSet類原理及使用示例01set.add(3);02set.add(1);03set.add(5);TreeSet類原理及使用示例System.out.println(set);//輸出:[1,3,5]```在TreeSet中,元素默認按照自然順序進行排序,也可以通過構造方法傳入自定義的Comparator來實現(xiàn)自定義排序。例如TreeSet類原理及使用示例```javaSet<String>set=newTreeSet<>(newComparator<String>(){TreeSet類原理及使用示例TreeSet類原理及使用示例@Override02publicintcompare(Stringo1,Stringo2){03returno1.length()-o2.length();//按照字符串長度進行排序01});set.add("apple");}TreeSet類原理及使用示例02030401TreeSet類原理及使用示例set.add("banana");set.add("kiwi");System.out.println(set);//輸出:[kiwi,apple,banana]```Map接口及其實現(xiàn)類PART04Map接口特點與常用方法鍵值對映射Map接口表示一種對象,它映射唯一鍵到值。一個映射不能包含重復的鍵,每個鍵最多映射到一個值。常用方法Map接口提供了豐富的操作方法,如`put(Kkey,Vvalue)`用于添加鍵值對,`get(Objectkey)`用于獲取鍵對應的值,`remove(Objectkey)`用于刪除鍵值對,`size()`用于返回映射中的鍵值對數(shù)目等。原理:HashMap基于哈希表實現(xiàn),使用鏈表解決哈希沖突。在JDK1.8之后,當鏈表長度大于一定閾值(默認為8)時,會將鏈表轉換為紅黑樹,進一步提高查找效率。HashMap類原理及使用示例使用示例```javaMap<String,Integer>map=newHashMap<>();010203HashMap類原理及使用示例map.put("one",1);map.put("two",2);map.put("three",3);010203HashMap類原理及使用示例HashMap類原理及使用示例System.out.println(map.get("one"));//輸出1System.out.println(map.size());//輸出3```TreeMap類原理及使用示例使用示例```javaMap<String,Integer>map=newTreeMap<>();TreeMap類原理及使用示例TreeMap類原理及使用示例030201map.put("one",1);map.put("two",2);map.put("three",3);TreeMap類原理及使用示例System.out.println(map.get("one"));//輸出1System.out.println(map.size());//輸出3//遍歷TreeMap,按鍵的自然順序輸出鍵值對TreeMap類原理及使用示例for(Map.Entry<String,Integer>entry:map.entrySet()){System.out.println(entry.getKey()+":"+entry.getValue());TreeMap類原理及使用示例}```迭代器與foreach循環(huán)PART05迭代器原理及使用示例迭代器原理:迭代器(Iterator)是一種設計模式,它是一個對象,它能夠遍歷并選擇序列中的對象,而開發(fā)人員不需要了解該序列的底層結構。迭代器通常被稱為“輕量級”對象,因為創(chuàng)建它的代價小。迭代器原理及使用示例010203使用示例```importjava.util.*;VSpublicclassTest{publicstaticvoidmain(Stringargs[]){迭代器原理及使用示例//創(chuàng)建一個哈希集合HashSet<String>set=newHashSet<String>();迭代器原理及使用示例set.add("Hello");set.add("World");set.add("Java");迭代器原理及使用示例//獲取迭代器Iterator<String>iterator=set.iterator();迭代器原理及使用示例//遍歷集合while(iterator.hasNext()){System.out.println(iterator.next());迭代器原理及使用示例01}}```}020304迭代器原理及使用示例foreach循環(huán)遍歷集合元素:Java5引入了新的循環(huán)類型——“增強for循環(huán)”或者“for-each循環(huán)”,它能在不使用下標的情況下遍歷數(shù)組或者集合。語法格式如下foreach循環(huán)遍歷集合元素foreach循環(huán)遍歷集合元素for(元素類型元素變量:遍歷對象){```引用了元素變量的代碼塊要點三}要點一要點二```使用示例要點三foreach循環(huán)遍歷集合元素```importjava.util.*;publicclassTest{foreach循環(huán)遍歷集合元素foreach循環(huán)遍歷集合元素publicstaticvoidmain(Stringargs[]){//創(chuàng)建一個哈希集合HashSet<String>set=newHashSet<String>();foreach循環(huán)遍歷集合元素set.add("World");set.add("Java");set.add("Hello");foreach循環(huán)遍歷集合元素//使用foreach循環(huán)遍歷集合元素for(Stringstr:set){System.out.println(str);foreach循環(huán)遍歷集合元素01020304}}}```foreach循環(huán)遍歷集合元素泛型在集合中的應用PART06泛型概念及作用泛型是Java提供的一種參數(shù)化類型機制,允許在定義類、接口和方法時使用類型參數(shù)。泛型提高了代碼的復用性和類型安全性。泛型概念通過使用泛型,可以編寫適用于多種數(shù)據(jù)類型的代碼,而無需為每種數(shù)據(jù)類型編寫單獨的代碼。此外,泛型還可以提高代碼的可讀性和可維護性,減少類型轉換錯誤的風險。泛型作用010203ArrayList<E>ArrayList是Java中的一個動態(tài)數(shù)組實現(xiàn),它支持泛型。例如,可以創(chuàng)建一個存儲String類型元素的ArrayList:`ArrayList<String>list=newArrayList<>();`HashSet<E>HashSet是Java中的一個不允許重復元素的集合實現(xiàn),它也支持泛型。例如,可以創(chuàng)建一個存儲Integer類型元素的HashSet:`HashSet<Integer>set=newHashSet<>();`Map<K,V>Map是Java中的一個鍵值對映射實現(xiàn),它支持泛型。其中,K表示鍵的類型,V表示值的類型。例如,可以創(chuàng)建一個存儲String類型鍵和Integer類型值的HashMap:`HashMap<String,Integer>map=newHashMap<>();`泛型在集合中的使用示例自定義泛型類和方法```javapublicclassBox<T>{privateTitem;010203自定義泛型類和方法publicBox(Titem){this.item=item;自定義泛型類和方法}publicTgetItem(){自定義泛型類和方法自定義泛型類和方法returnitem;自定義泛型類和方法}publicvoidsetItem(Titem){this.item=item;自定義泛型類和方法```}}自定義泛型類和方法自定義泛型類和方法自定義泛型方法:可以在方法簽名中添加類型參數(shù)來定義泛型方法。例如,以下是一個簡單的泛型方法示例,它接受一個類型參數(shù)T和兩個T類型的參數(shù),并返回它們的和(假設T是Number的子類)```javapublicstatic<TextendsNumber>doubleadd(Ta,Tb){doublesum=a.doubleValue()+b.doubleValue();自定義泛型類和方法自定義泛型類和方法VS}```自定義泛型類和方法集合操作技巧與注意事項PART0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024美團商家入駐平臺合作協(xié)議及客戶服務承諾3篇
- 2024熟石灰采購合同范本
- 二零二五版高端個性化二婚離婚補償協(xié)議定制合同
- 2025年度金融科技產(chǎn)品服務水平協(xié)議2篇
- 2024年項目性勞動合同
- 2025版公立醫(yī)療機構與學校醫(yī)務室共建項目合同3篇
- 二零二五版民品典當借款合同法律適用說明4篇
- 租賃合同(2025年度):魚池場地租賃、養(yǎng)殖技術指導及分成3篇
- 長白山職業(yè)技術學院《漢字及其教學》2023-2024學年第一學期期末試卷
- 小學生體育活動中的團隊協(xié)作能力培養(yǎng)
- 海外資管機構赴上海投資指南(2024版)
- 山東省青島市2023-2024學年七年級上學期期末考試數(shù)學試題(含答案)
- 墓地銷售計劃及方案設計書
- 從偏差行為到卓越一生3.0版
- 優(yōu)佳學案七年級上冊歷史
- 鋁箔行業(yè)海外分析
- 紀委辦案安全培訓課件
- 超市連鎖行業(yè)招商策劃
- 城市道路智慧路燈項目 投標方案(技術標)
- 【公司利潤質量研究國內外文獻綜述3400字】
- 工行全國地區(qū)碼
評論
0/150
提交評論