![JAVA集合框架[精校版本]_第1頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/28/41d26c9c-5912-40de-b368-1d6953861b8f/41d26c9c-5912-40de-b368-1d6953861b8f1.gif)
![JAVA集合框架[精校版本]_第2頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/28/41d26c9c-5912-40de-b368-1d6953861b8f/41d26c9c-5912-40de-b368-1d6953861b8f2.gif)
![JAVA集合框架[精校版本]_第3頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/28/41d26c9c-5912-40de-b368-1d6953861b8f/41d26c9c-5912-40de-b368-1d6953861b8f3.gif)
![JAVA集合框架[精校版本]_第4頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/28/41d26c9c-5912-40de-b368-1d6953861b8f/41d26c9c-5912-40de-b368-1d6953861b8f4.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、集合框架 Java平臺提供了一個全新的集合框架?!凹峡蚣堋敝饕梢唤M用來操作對象的接口組成。不同接口描述一組不同數(shù)據(jù)類型。它們都封裝在java.util包中核心接口 Java集合框架的核心接口有兩種:Collection(聚集)和Map(映射) Collection 接口是一組允許重復的對象。 Set 中的數(shù)據(jù)對象沒有順序且不可以重復。接口 List中的數(shù)據(jù)對象有順序且可以重復。接口 Map接口是一組成對的鍵值對象,即所持有的是key-value pairs。Map中不能有重復的key。擁有自己的內(nèi)部排列機制。不能有重復的鍵Collection 類 java.util.Collections
2、 提供了一些靜態(tài)方法實現(xiàn)了基于List容器的一些常用算法 void sort(List l) 對List容器內(nèi)的元素排序 void shuffle(List l) 對List容器內(nèi)的對象進行隨機排列 void reverse(List l) 對List容器內(nèi)的對象進行逆續(xù)排列 void fill(List l, Object o) 用一個特定的對象重寫整個List容器 void copy(List dest,List src) 將src List容器內(nèi)容拷貝到dest List容器 int binarySearch(List l, Object o) 對于順序的List容器,采用折半查找的方法
3、查找特定對象例題:List l1 = new LinkedList();List l2 = new LinkedList();for(int i=0; i=9; i+) l1.add(a+i); System.out.println(l1);Collections.shuffle(l1); /隨機排列System.out.println(l1); Collections.reverse(l1); /逆續(xù)System.out.println(l1);Collections.sort(l1); /排序 System.out.println(l1);System.out.println(Collec
4、tions.binarySearch(l1,“a5”); /折半查找List List接口是Collection的子接口,實現(xiàn)List接口的容器類中的元素是有順序的,而且可以重復 List 容器中的元素都對應(yīng)一個整數(shù)型的序號記載其在容器中的位置,可以根據(jù)序號存取容器中的元素。 List 接口中所定義的方法: Object get(int index); Object set(int index, Object element); void add(int index, Object element); Object remove(int index); int indexOf(Object o
5、); int lastIndexOf(Object o);List接口的實體類LinkList類 第一步,確定存儲方式 1、LinkedList類是List接口的一個具體實現(xiàn)類2、LinkedList 類用于創(chuàng)建鏈表數(shù)據(jù)結(jié)構(gòu)3、插入或者刪除元素時,它提供更好的性能 創(chuàng)建一個類Stack,代表堆棧(其特點為:后進先出),添加方法add(Object obj)、以及get(),添加main方法進行驗證,要求: 使用LinkedList實現(xiàn)堆棧 在向LinkedList中添加時,使用addLast方法 在從LinkedList中取出時,使用removeLast方法import java.util.*
6、;public class MyStack /* * List的實現(xiàn)類LinkedList * LinkedList存儲時按照后進先出的原則 */private LinkedList stack=new LinkedList();/* * 把對象存入LinkedList的第一個位置 */public void push(Object o)stack.addFirst(o);/* * param args * 把第一個位置的對象進行刪除 */public Object pop()return stack.removeFirst();/* * 取得LinkedList的第一個元素 */public
7、 Object peek()return stack.getFirst();public static void main(String args) MyStack m=new MyStack();m.push(wangwu);m.push(zhangsan);m.push(lisi);System.out.println(現(xiàn)在籮筐頂部的元素是:+m.peek();m.pop();System.out.println(現(xiàn)在籮筐頂部的元素是:+m.peek();ArrayList類 import java.util.ArrayList;public class TestArrayList /*
8、* List接口的第二個實現(xiàn)類,按照先進先出 */public static void main(String args) ArrayList list=new ArrayList();list.add(a);list.add(b);list.add(c);for (int i=0;ilist.size();i+)String temp=list.get(i);System.out.println(temp);import java.util.ArrayList;class Studentpublic String name;public int num;public String addre
9、ss;public Student(String name,int num,String address)=name;this.num=num;this.address=address;public String getName() return name;public void setName(String name) = name;public int getNum() return num;public void setNum(int num) this.num = num;public String getAddress() return addr
10、ess;public void setAddress(String address) this.address = address;public class Arrayzuoye /* * 利用ArrayList來存儲一個小學生類,學生類有學號,姓名,住址三個屬相,實例化出一個學生“張三”。并且進行遍歷取出 * 集合中不是真正存入某個對象, 而是保存的是對象的引用 */public static void main(String args) ArrayList list=new ArrayList();Student s=new Student(張三,1000000,中國);/把張三這個對象存
11、入ArryList中l(wèi)ist.add(s);/s.setName(李四);System.out.println(list.get(0).name); ArrayList類封裝了一個動態(tài)再分配的Object數(shù)組。 集合框架中保存的都是對象的引用,不是對象的備份。這一點尤其重要111111111111111111111111111News類import java.util.Date;public class News private int id;private String title;private String creater;private Date date;public News(in
12、t id,String title,String creater,Date date)this.id=id;this.title=title;this.creater=creater;this.date=date;public int getId() return id;public void setId(int id) this.id = id;public String getTitle() return title;public void setTitle(String title) this.title = title;public String getCreater() return
13、 creater;public void setCreater(String creater) this.creater = creater;public Date getDate() return date;public void setDate(Date date) this.date = date;22222222222222222222222222import java.util.ArrayList;import java.util.Date;public class TestNews /* * param args */public static void main(String a
14、rgs) News new1=new News(1,car,管理員,new Date();News new2=new News(2,newz,管理員,new Date();ArrayList list=new ArrayList(); /list.add(new1);list.add(new2);System.out.println(list.size();for(int i=0;ilist.size();i+)/News n=(News)list.get(i);/System.out.println(n.getTitle();System.out.println(list.get(i).ge
15、tTitle();List接口的實體類ArrayList做刪除import java.util.ArrayList;public class DelteArrays /* * param args */public static void main(String args) ArrayList list=new ArrayList();list.add(1);list.add(2);list.add(3);list.add(4);String value=;System.out.println(list.size();for(int i=0;ilist.size();i+)System.out
16、.println(list.get(i);for(int i=0;ilist.size();i+)value=list.get(i);if(3.equals(value)list.remove(i);System.out.println(list.size();for(int i=0;ilist.size();i+)System.out.println(使用傳統(tǒng)遍歷方式后+現(xiàn)在的值+list.get(i);Iterator接口 所有實現(xiàn)了Collection接口的容器類都有一個iterator方法用以返回一個實現(xiàn)了Iterator接口的對象。 Iterator對象稱作迭代器,用以方便的實現(xiàn)對容
17、器內(nèi)元素的遍歷操作。 Iterator接口定義了如下方法: boolean hasNext(); /判斷游標右邊是否有元素 Object next(); /返回游標右邊的元素并將游標移動到下一個位置 void remove(); /刪除游標左面的元素,在執(zhí)行完next之后該 /操作只能執(zhí)行一次import java.util.ArrayList;import java.util.Iterator;public class DeleteByIterator public static void main(String args) ArrayList list=new ArrayList();li
18、st.add(3);list.add(3);list.add(3);list.add(4);String value=;Iterator it=list.iterator(); /對容器list的內(nèi)容進行遍歷while(it.hasNext() /游標在第一個元素的左邊,判斷下一個元素是否存在value=it.next();if(3.equals(value)it.remove();for(int i=0;ilist.size();i+)System.out.println(現(xiàn)在的值+list.get(i);import java.util.HashSet;import java.util.I
19、terator;public class TestSet1 public static void main(String args) HashSet set=new HashSet();set.add(1);set.add(2);set.add(3);for(Iterator iter=set.iterator();iter.hasNext();)System.out.println(iter.next();Set接口Set 接口繼承 Collection 接口,它不允許集合中存在重復項, 而且它不象List按照加入列表的順序存儲元素,它有自己的排列法則。 Set 接口是Collection的
20、子接口,Set接口沒有提供額外的方法,但實現(xiàn) Set 接口的容器類中的元素是沒有有順序的,而且不可以重復 Set 容器可以與數(shù)學中“集合”的概念相對應(yīng) J2SDK API中 所提供的 Set 容器類有 HashSet,TreeSet 等import java.util.HashSet;import java.util.Iterator;public class TestSet1 public static void main(String args) HashSet set=new HashSet();set.add(1);set.add(2);set.add(3);for(Iterator
21、iter=set.iterator();iter.hasNext();)System.out.println(iter.next();HashSet類 用HashSet過濾自定義類。一般認為如果學號一致,就應(yīng)該是同一個人。本例的過濾規(guī)則就是同學號的學生將保留一個。11111111111111111111111111111111111111Student類import java.util.HashSet;import java.util.Iterator;class Student private String num; private String name; Student(String n
22、um,String name) this.num=num; =name; public String getNum() return num;public void setNum(String num) this.num = num;public String getName() return name;public void setName(String name) = name;public String toString() return 學號是+num+姓名是+name;public int hashCode() return this.getNu
23、m().hashCode();public boolean equals(Object obj) Student stu=(Student) obj;if(this.getNum()=stu.getNum()return true;return false;public class TestStudent public static void main(String args) HashSet set=new HashSet();Student s1=new Student(13,李四);Student s2=new Student(12,張三);Student s3=new Student(
24、12,w);Student s4=new Student(11,f);set.add(s1);set.add(s2);set.add(s3);set.add(s4);/問題1:如何打印出來就是姓名+學號這種形式呢?/問題2:set中存儲的對象如果hashCode一致,就認為是一個對象/只要對象學號的hasCode一致,set進行自動過濾/iter.next()進行對象實例化時,會自動調(diào)用類中隱藏的方法for(Iterator iter=set.iterator();iter.hasNext();)System.out.println(iter.next();LinkedHashSet的用法Li
25、nkedHashSet是HashSet的子類,用法和HashSet一致。 import java.util.Iterator;import java.util.LinkedHashSet;public class LinkedHashSetTest /* * 存儲有序?qū)ο笙冗M先出*/public static void main(String args) LinkedHashSet set=new LinkedHashSet();set.add(1);set.add(2);set.add(3);set.add(4);for(Iterator iter=set.iterator();iter.h
26、asNext();)System.out.println(iter.next();Map接口 Map接口不是Collection接口的繼承。Map接口用于維護鍵/值對(key/value pairs)。該接口描述了從不重復的鍵到值的映射。 實現(xiàn)Map接口的類用來存儲鍵值 對。 Map 接口的實現(xiàn)類有HashMap(查找速度最快)和TreeMap等,HashMap通過hashcode對其內(nèi)容進行快速查找,而TreeMap中所有的元素都保持著某種固定的順序 。 Map類中存儲的鍵值對通過鍵來標識,所以鍵值不能重復Map 接口方法Object put(Object key, Object value
27、);Object get(Object key);Object remove(Object key);boolean containsKey(Object key);boolean containsValue(Object value); 第一步,確定存儲方式 1、Map接口用于維護“鍵-值對”的關(guān)聯(lián)性,可以通過鍵查找值2、HashMap是Map接口的一個具體實現(xiàn)類 import java.util.HashMap;import java.util.Iterator;public class MapTest /* * param args */public static void main(S
28、tring args) HashMap map=new HashMap();map.put(001,aaaaaaaaaa);map.put(002,bbbbbbbbbbbb);map.put(003,cccccccccccccc);System.out.println(map.get(001);/先把HashMap轉(zhuǎn)換成Set接口,再通過接口的相應(yīng)方法遍歷for(Iterator iter=map.keySet().iterator();iter.hasNext();)String key=(String)iter.next();System.out.println(key+map.get(k
29、ey);/如果說map里面包含001的鍵值if(map.containsKey(001)System.out.println(有此鍵值);elseSystem.out.println(無此鍵值);package i;import java.util.HashMap;import java.util.Iterator;public class Student private String name;private String className;public Student(String name,String className)=name;this.className=className;public String getName() return name;public void setName(String name) = name;public String getClassName() return className;public void setClassName(String className) this.className = className;public String toString() / TODO Auto-generated method stubreturn this.className;public s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 線條燈橋梁施工方案
- 第10課 金與南宋對峙 教案2024-2025學年七年級歷史下冊新課標
- 清水混凝土施工方案總結(jié)
- 2025年低空雷達行業(yè)政策分析:低空雷達行業(yè)標準提供有力支持
- 雨水管安裝施工方案
- 混凝土和基礎(chǔ)施工方案
- 大石橋消防施工方案
- 2025年大二財務(wù)會計試題及答案
- 豪邦物業(yè)考試試題及答案
- 2025屆福建省莆田高中畢業(yè)班第二次質(zhì)量檢測英語試題(原卷版+解析版)
- 2025春蘇少版(2024)美術(shù)小學一年級下冊第二單元《有趣的肌理》教學設(shè)計
- 2025年安徽財貿(mào)職業(yè)學院單招職業(yè)技能考試題庫及完整答案一套
- 2025年安徽中醫(yī)藥高等??茖W校單招職業(yè)適應(yīng)性測試題庫有答案
- 2025年無錫職業(yè)技術(shù)學院單招職業(yè)傾向性測試題庫完整版
- 2025年皖西衛(wèi)生職業(yè)學院單招職業(yè)技能測試題庫及答案1套
- 2025年山東省泰安市東平縣中考一模物理試題附參考答案
- 《馬云創(chuàng)業(yè)經(jīng)歷》課件
- 常用量具使用方法課件
- 2024年05月安徽農(nóng)商銀行系統(tǒng)社會招考計算機法律專業(yè)員工人員筆試歷年參考題庫附帶答案詳解
- 騰訊云人工智能工程師認證考試題(附答案)
評論
0/150
提交評論