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

下載本文檔

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

文檔簡介

1、如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按鈕下載!集合框架Ø java平臺(tái)提供了一個(gè)全新的集合框架?!凹峡蚣堋敝饕梢唤M用來操作對(duì)象的接口組成。不同接口描述一組不同數(shù)據(jù)類型。它們都封裝在java.util包中核心接口Ø java集合框架的核心接口有兩種:collection(聚集)和map(映射)Ø collection 接口是一組允許重復(fù)的對(duì)象。Ø set 中的數(shù)據(jù)對(duì)象沒有順序且不可以重復(fù)。接口 Ø list中的數(shù)據(jù)對(duì)象有順序且可以重復(fù)。接口Ø map接口是一組成對(duì)的鍵值對(duì)象,即所持有的是key-value pairs。map中不能有重復(fù)

2、的key。擁有自己的內(nèi)部排列機(jī)制。不能有重復(fù)的鍵collectionØ 類 java.util.collections 提供了一些靜態(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(li

3、st dest,list src) Ø 將src list容器內(nèi)容拷貝到dest list容器Ø int binarysearch(list l, object o)Ø 對(duì)于順序的list容器,采用折半查找的方法查找特定對(duì)象1 / 191如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按鈕下載!例題:list l1 = new linkedlist();list l2 = new linkedlist();for(int i=0; i<=9; i+) l1.add("a"+i); system.out.println(l1);collections.sh

4、uffle(l1); /隨機(jī)排列system.out.println(l1); collections.reverse(l1); /逆續(xù)system.out.println(l1);collections.sort(l1); /排序 system.out.println(l1);system.out.println(collections.binarysearch(l1,“a5”); /折半查找list2 / 192如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按鈕下載!Ø list接口是collection的子接口,實(shí)現(xiàn)list接口的容器類中的元素是有順序的,而且可以重復(fù)Ø list

5、容器中的元素都對(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);Ø int lastindexof(object o);list接口的實(shí)體類linklist類&#

6、216; 第一步,確定存儲(chǔ)方式 1、linkedlist類是list接口的一個(gè)具體實(shí)現(xiàn)類3 / 193如果您需要使用本文檔,請(qǐng)點(diǎ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 jav

7、a.util.*;public class mystack /* * list的實(shí)現(xiàn)類linkedlist * linkedlist存儲(chǔ)時(shí)按照后進(jìn)先出的原則 */private linkedlist<object> stack=new linkedlist<object>();/* * 把對(duì)象存入linkedlist的第一個(gè)位置 */public void push(object o)stack.addfirst(o);/* * param args * 把第一個(gè)位置的對(duì)象進(jìn)行刪除 */public object pop()return stack.removefirs

8、t();/* * 取得linkedlist的第一個(gè)元素 */public 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();4 / 194如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按

9、鈕下載!system.out.println("現(xiàn)在籮筐頂部的元素是:"+m.peek();arraylist類 import java.util.arraylist;public class testarraylist /* * list接口的第二個(gè)實(shí)現(xiàn)類,按照先進(jìn)先出 */public static void main(string args) arraylist<string> list=new arraylist<string>();list.add("a");list.add("b");list.ad

10、d("c");for (int i=0;i<list.size();i+)string temp=list.get(i);system.out.println(temp);import java.util.arraylist;class studentpublic string name;public int num;public string address;public student(string name,int num,string address)=name;this.num=num;this.address=address;public

11、 string getname() return name;public void setname(string name) = name;public int getnum() 5 / 195如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按鈕下載!return num;public void setnum(int num) this.num = num;public string getaddress() return address;public void setaddress(string address) this.address = address;public class a

12、rrayzuoye /* * 利用arraylist來存儲(chǔ)一個(gè)小學(xué)生類,學(xué)生類有學(xué)號(hào),姓名,住址三個(gè)屬相,實(shí)例化出一個(gè)學(xué)生“張三”。并且進(jìn)行遍歷取出 * 集合中不是真正存入某個(gè)對(duì)象, 而是保存的是對(duì)象的引用 */public static void main(string args) arraylist<student> list=new arraylist<student>();student s=new student("張三",1000000,"中國");/把張三這個(gè)對(duì)象存入arrylist中l(wèi)ist.add(s);/s.s

13、etname("李四");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(int

14、id,string title,string creater,date date)6 / 196如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按鈕下載!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

15、string getcreater() return 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

16、 static void main(string args) news new1=new news(1,"car","管理員",new date();news new2=new news(2,"newz","管理員",new date();arraylist<news> list=new arraylist<news>(); /list.add(new1);list.add(new2);system.out.println(list.size();7 / 197如果您需要使用本文檔,請(qǐng)點(diǎn)擊下

17、載按鈕下載!for(int i=0;i<list.size();i+)/news n=(news)list.get(i);/system.out.println(n.gettitle();system.out.println(list.get(i).gettitle();list接口的實(shí)體類arraylist做刪除import java.util.arraylist;public class deltearrays /* * param args */public static void main(string args) arraylist<string> list=new

18、 arraylist<string>();list.add("1");list.add("2");list.add("3");list.add("4");string value=""system.out.println(list.size();for(int i=0;i<list.size();i+)system.out.println(list.get(i);for(int i=0;i<list.size();i+)value=list.get(i);if("

19、;3".equals(value)list.remove(i);system.out.println(list.size();for(int i=0;i<list.size();i+)system.out.println("使用傳統(tǒng)遍歷方式后"+"現(xiàn)在的值"+list.get(i);iterator接口8 / 198如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按鈕下載!Ø 所有實(shí)現(xiàn)了collection接口的容器類都有一個(gè)iterator方法用以返回一個(gè)實(shí)現(xiàn)了iterator接口的對(duì)象。Ø iterator對(duì)象稱作迭代器,用以方便

20、的實(shí)現(xiàn)對(duì)容器內(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) arra

21、ylist<string> list=new arraylist<string>();list.add("3");list.add("3");list.add("3");list.add("4");string value=""iterator<string> it=list.iterator(); /對(duì)容器list的內(nèi)容進(jìn)行遍歷while(it.hasnext() /游標(biāo)在第一個(gè)元素的左邊,判斷下一個(gè)元素是否存在9 / 199如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載

22、按鈕下載!value=it.next();if("3".equals(value)it.remove();for(int i=0;i<list.size();i+)system.out.println("現(xiàn)在的值"+list.get(i);import java.util.hashset;import java.util.iterator;public class testset1 public static void main(string args) hashset<string> set=new hashset<string

23、>();set.add("1");set.add("2");set.add("3");for(iterator<string> iter=set.iterator();iter.hasnext();)system.out.println(iter.next();set接口set 接口繼承 collection 接口,它不允許集合中存在重復(fù)項(xiàng), 而且它不象list按照加入列表的順序存儲(chǔ)元素,它有自己的排列法則。 Ø set 接口是collection的子接口,set接口沒有提供額外的方法,但實(shí)現(xiàn) set 接口

24、的容器類中的元素是沒有有順序的,而且不可以重復(fù)Ø set 容器可以與數(shù)學(xué)中“集合”的概念相對(duì)應(yīng)10 / 1910如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按鈕下載!Ø j2sdk api中 所提供的 set 容器類有 hashset,treeset 等import java.util.hashset;import java.util.iterator;public class testset1 public static void main(string args) hashset<string> set=new hashset<string>();set.a

25、dd("1");set.add("2");set.add("3");for(iterator<string> iter=set.iterator();iter.hasnext();)system.out.println(iter.next();hashset類Ø 用hashset過濾自定義類。一般認(rèn)為如果學(xué)號(hào)一致,就應(yīng)該是同一個(gè)人。本例的過濾規(guī)則就是同學(xué)號(hào)的學(xué)生將保留一個(gè)。11 / 1911如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按鈕下載!11111111111111111111111111111111111111stu

26、dent類import java.util.hashset;import java.util.iterator;class student private string num; private string name; student(string num,string name) this.num=num;12 / 1912如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按鈕下載! =name; public string getnum() return num;public void setnum(string num) this.num = num;public string get

27、name() return name;public void setname(string name) = name;public string tostring() return "學(xué)號(hào)是"+num+"姓名是"+name;public int hashcode() return this.getnum().hashcode();public boolean equals(object obj) student stu=(student) obj;if(this.getnum()=stu.getnum()return true;ret

28、urn false;public class teststudent public static void main(string args) hashset<student> set=new hashset<student>();student s1=new student("13","李四");student s2=new student("12","張三");student s3=new student("12","w");student s4=

29、new student("11","f");set.add(s1);set.add(s2);set.add(s3);set.add(s4);/問題1:如何打印出來就是姓名+學(xué)號(hào)這種形式呢?/問題2:set中存儲(chǔ)的對(duì)象如果hashcode一致,就認(rèn)為是一個(gè)對(duì)象/只要對(duì)象學(xué)號(hào)的hascode一致,set進(jìn)行自動(dòng)過濾13 / 1913如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按鈕下載!/iter.next()進(jìn)行對(duì)象實(shí)例化時(shí),會(huì)自動(dòng)調(diào)用類中隱藏的方法for(iterator<student> iter=set.iterator();iter.hasnext(

30、);)system.out.println(iter.next();linkedhashset的用法linkedhashset是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<string> set=new linkedhashset<string>();set

31、.add("1");set.add("2");set.add("3");set.add("4");for(iterator<string> iter=set.iterator();iter.hasnext();)system.out.println(iter.next();map接口Ø map接口不是collection接口的繼承。map接口用于維護(hù)鍵/值對(duì)(key/value pairs)。該接口描述了從不重復(fù)的鍵到值的映射。14 / 1914如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按鈕下載!

32、16; 實(shí)現(xiàn)map接口的類用來存儲(chǔ)鍵值 對(duì)。Ø map 接口的實(shí)現(xiàn)類有hashmap(查找速度最快)和treemap等,hashmap通過hashcode對(duì)其內(nèi)容進(jìn)行快速查找,而treemap中所有的元素都保持著某種固定的順序 。Ø map類中存儲(chǔ)的鍵值對(duì)通過鍵來標(biāo)識(shí),所以鍵值不能重復(fù)map 接口方法object put(object key, object value);object get(object key);object remove(object key);boolean containskey(object key);boolean containsvalue

33、(object value);Ø 第一步,確定存儲(chǔ)方式 1、map接口用于維護(hù)“鍵-值對(duì)”的關(guān)聯(lián)性,可以通過鍵查找值2、hashmap是map接口的一個(gè)具體實(shí)現(xiàn)類 15 / 1915如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按鈕下載!import java.util.hashmap;import java.util.iterator;public class maptest /* * param args */public static void main(string args) hashmap<string,string> map=new hashmap<string,s

34、tring>();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<string> iter=map.keyset().iterator();iter.ha

35、snext();)string key=(string)iter.next();system.out.println(key+""+map.get(key);/如果說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

36、 private string name;private string classname;public student(string name,string classname)=name;this.classname=classname;16 / 1916如果您需要使用本文檔,請(qǐng)點(diǎn)擊下載按鈕下載!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 static void main(string arge)student s1=new student("rose","c1")

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論