JAVA集合框架[精校版本]_第1頁(yè)
JAVA集合框架[精校版本]_第2頁(yè)
JAVA集合框架[精校版本]_第3頁(yè)
JAVA集合框架[精校版本]_第4頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、集合框架 Java平臺(tái)提供了一個(gè)全新的集合框架?!凹峡蚣堋敝饕梢唤M用來(lái)操作對(duì)象的接口組成。不同接口描述一組不同數(shù)據(jù)類型。它們都封裝在java.util包中核心接口 Java集合框架的核心接口有兩種:Collection(聚集)和Map(映射) Collection 接口是一組允許重復(fù)的對(duì)象。 Set 中的數(shù)據(jù)對(duì)象沒(méi)有順序且不可以重復(fù)。接口 List中的數(shù)據(jù)對(duì)象有順序且可以重復(fù)。接口 Map接口是一組成對(duì)的鍵值對(duì)象,即所持有的是key-value pairs。Map中不能有重復(fù)的key。擁有自己的內(nèi)部排列機(jī)制。不能有重復(fù)的鍵Collection 類 java.util.Collections

2、 提供了一些靜態(tài)方法實(shí)現(xiàn)了基于List容器的一些常用算法 void sort(List l) 對(duì)List容器內(nèi)的元素排序 void shuffle(List l) 對(duì)List容器內(nèi)的對(duì)象進(jìn)行隨機(jī)排列 void reverse(List l) 對(duì)List容器內(nèi)的對(duì)象進(jìn)行逆續(xù)排列 void fill(List l, Object o) 用一個(gè)特定的對(duì)象重寫整個(gè)List容器 void copy(List dest,List src) 將src List容器內(nèi)容拷貝到dest List容器 int binarySearch(List l, Object o) 對(duì)于順序的List容器,采用折半查找的方法

3、查找特定對(duì)象例題: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); /隨機(jī)排列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的子接口,實(shí)現(xiàn)List接口的容器類中的元素是有順序的,而且可以重復(fù) List 容器中的元素都對(duì)應(yīng)一個(gè)整數(shù)型的序號(hào)記載其在容器中的位置,可以根據(jù)序號(hào)存取容器中的元素。 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接口的實(shí)體類LinkList類 第一步,確定存儲(chǔ)方式 1、LinkedList類是List接口的一個(gè)具體實(shí)現(xiàn)類2、LinkedList 類用于創(chuàng)建鏈表數(shù)據(jù)結(jié)構(gòu)3、插入或者刪除元素時(shí),它提供更好的性能 創(chuàng)建一個(gè)類Stack,代表堆棧(其特點(diǎn)為:后進(jìn)先出),添加方法add(Object obj)、以及get(),添加main方法進(jìn)行驗(yàn)證,要求: 使用LinkedList實(shí)現(xiàn)堆棧 在向LinkedList中添加時(shí),使用addLast方法 在從LinkedList中取出時(shí),使用removeLast方法import java.util.*

6、;public class MyStack /* * List的實(shí)現(xiàn)類LinkedList * LinkedList存儲(chǔ)時(shí)按照后進(jìn)先出的原則 */private LinkedList stack=new LinkedList();/* * 把對(duì)象存入LinkedList的第一個(gè)位置 */public void push(Object o)stack.addFirst(o);/* * param args * 把第一個(gè)位置的對(duì)象進(jìn)行刪除 */public Object pop()return stack.removeFirst();/* * 取得LinkedList的第一個(gè)元素 */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接口的第二個(gè)實(shí)現(xiàn)類,按照先進(jì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來(lái)存儲(chǔ)一個(gè)小學(xué)生類,學(xué)生類有學(xué)號(hào),姓名,住址三個(gè)屬相,實(shí)例化出一個(gè)學(xué)生“張三”。并且進(jìn)行遍歷取出 * 集合中不是真正存入某個(gè)對(duì)象, 而是保存的是對(duì)象的引用 */public static void main(String args) ArrayList list=new ArrayList();Student s=new Student(張三,1000000,中國(guó));/把張三這個(gè)對(duì)象存

11、入ArryList中l(wèi)ist.add(s);/s.setName(李四);System.out.println(list.get(0).name); ArrayList類封裝了一個(gè)動(dòng)態(tài)再分配的Object數(shù)組。 集合框架中保存的都是對(duì)象的引用,不是對(duì)象的備份。這一點(diǎn)尤其重要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接口的實(shí)體類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接口 所有實(shí)現(xiàn)了Collection接口的容器類都有一個(gè)iterator方法用以返回一個(gè)實(shí)現(xiàn)了Iterator接口的對(duì)象。 Iterator對(duì)象稱作迭代器,用以方便的實(shí)現(xiàn)對(duì)容

17、器內(nèi)元素的遍歷操作。 Iterator接口定義了如下方法: boolean hasNext(); /判斷游標(biāo)右邊是否有元素 Object next(); /返回游標(biāo)右邊的元素并將游標(biāo)移動(dòng)到下一個(gè)位置 void remove(); /刪除游標(biāo)左面的元素,在執(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(); /對(duì)容器list的內(nèi)容進(jìn)行遍歷while(it.hasNext() /游標(biāo)在第一個(gè)元素的左邊,判斷下一個(gè)元素是否存在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 接口,它不允許集合中存在重復(fù)項(xiàng), 而且它不象List按照加入列表的順序存儲(chǔ)元素,它有自己的排列法則。 Set 接口是Collection的

20、子接口,Set接口沒(méi)有提供額外的方法,但實(shí)現(xiàn) Set 接口的容器類中的元素是沒(méi)有有順序的,而且不可以重復(fù) Set 容器可以與數(shù)學(xué)中“集合”的概念相對(duì)應(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過(guò)濾自定義類。一般認(rèn)為如果學(xué)號(hào)一致,就應(yīng)該是同一個(gè)人。本例的過(guò)濾規(guī)則就是同學(xué)號(hào)的學(xué)生將保留一個(gè)。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 學(xué)號(hào)是+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);/問(wèn)題1:如何打印出來(lái)就是姓名+學(xué)號(hào)這種形式呢?/問(wèn)題2:set中存儲(chǔ)的對(duì)象如果hashCode一致,就認(rèn)為是一個(gè)對(duì)象/只要對(duì)象學(xué)號(hào)的hasCode一致,set進(jìn)行自動(dòng)過(guò)濾/iter.next()進(jìn)行對(duì)象實(shí)例化時(shí),會(huì)自動(dòng)調(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 /* * 存儲(chǔ)有序?qū)ο笙冗M(jìn)先出*/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接口用于維護(hù)鍵/值對(duì)(key/value pairs)。該接口描述了從不重復(fù)的鍵到值的映射。 實(shí)現(xiàn)Map接口的類用來(lái)存儲(chǔ)鍵值 對(duì)。 Map 接口的實(shí)現(xiàn)類有HashMap(查找速度最快)和TreeMap等,HashMap通過(guò)hashcode對(duì)其內(nèi)容進(jìn)行快速查找,而TreeMap中所有的元素都保持著某種固定的順序 。 Map類中存儲(chǔ)的鍵值對(duì)通過(guò)鍵來(lái)標(biāo)識(shí),所以鍵值不能重復(fù)Map 接口方法Object put(Object key, Object value

27、);Object get(Object key);Object remove(Object key);boolean containsKey(Object key);boolean containsValue(Object value); 第一步,確定存儲(chǔ)方式 1、Map接口用于維護(hù)“鍵-值對(duì)”的關(guān)聯(lián)性,可以通過(guò)鍵查找值2、HashMap是Map接口的一個(gè)具體實(shí)現(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接口,再通過(guò)接口的相應(yīng)方法遍歷for(Iterator iter=map.keySet().iterator();iter.hasNext();)String key=(String)iter.next();System.out.println(key+map.get(k

29、ey);/如果說(shuō)map里面包含001的鍵值if(map.containsKey(001)System.out.println(有此鍵值);elseSystem.out.println(無(wú)此鍵值);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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論