Java集合框架實驗報告驕陽教育_第1頁
Java集合框架實驗報告驕陽教育_第2頁
Java集合框架實驗報告驕陽教育_第3頁
Java集合框架實驗報告驕陽教育_第4頁
Java集合框架實驗報告驕陽教育_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、浙江大學城市學院實驗報告課程名稱 java高級程序設計 實驗項目名稱 java集合框架實驗 學生姓名 專業(yè)班級 學號 一、實驗目的1. 理解java集合框架的特點、接口與類之間的關系2. 掌握java集合框架的list接口,以及l(fā)ist接口的重要實現(xiàn)類linkedlist、arraylist3. 掌握java集合框架的set、sortedset接口,以及重要實現(xiàn)類hashset與treeset4. 掌握java集合框架的map、sortedmap接口及其重要實現(xiàn)類hashmap、treemap5. 掌握java集合框架的collection與iterator接口的特點與使用方式 二、實驗內容1

2、、 使用list管理對象集合2、 使用map管理對象集合3、 使用set管理對象集合4、 設計一個自定義的集合類三、實驗步驟1、 在eclipse中新建工程(即項目)2、 使用list管理對象集合1) 新建一個包listexample2) 在這個包中新建三個類:student類,studentlist類,studentlisttest類。參考代碼: student.java, studentlist.java,studentlisttest.java3) 完善上面三個類,相關要求參考源代碼程序的注釋,即根據(jù)要求修改源代碼程序,給出具體的實現(xiàn)代碼(不使用泛型類)。void addstudent(

3、student student)/添加一個學生對象boolean a=true;for(int i=0;istudents.size();i+)student stud = (student)students.get(i);if(stud.getid().equalsignorecase(student.getid()a=false;if(a=true)students.add(student);/修改代碼,保證students集合中所有學生對象的id號唯一 void deletestudentbyid(string id)/根據(jù)學號刪除學生對象 for(int i=0;istudents.s

4、ize();i+)student stud = (student)students.get(i);if(stud.getid().equalsignorecase(id)students.remove(stud); void deletestudentbyname(string name)/根據(jù)姓名刪除學生對象 for(int i=0;istudents.size();i+)student stud = (student)students.get(i);if(stud.getname().equalsignorecase(name)students.remove(stud); void del

5、etestudentbyage(int age)/根據(jù)年齡刪除學生對象 for(int i=0;istudents.size();i+)student stud = (student)students.get(i);if(stud.getage()=age)students.remove(stud);student findbyname(string name)int a=0;for(int i=0;istudents.size();i+)student stud = (student)students.get(i);if(stud.getname().equalsignorecase(nam

6、e)a+;student st=new studenta;int b=0;for(int i=0;istudents.size();i+)student stud = (student)students.get(i);if(stud.getname().equalsignorecase(name)stb=stud; b+; return st;student findbyage(int age)int a=0;for(int i=0;istudents.size();i+)student stud = (student)students.get(i);if(stud.getage()=age)

7、a+;student st=new studenta;int b=0;for(int i=0;istudents.size();i+)student stud = (student)students.get(i);if(stud.getage()=age)stb=stud;b+;return st;4) 新創(chuàng)建listexample2包,重新設計設計上述程序(新程序都屬于這個包),這時需要使用泛型類,即出現(xiàn)的list、arraylist或linkedlist都使用泛型。private list students = new arraylist(); void deletestudentbyid

8、(string id)/根據(jù)學號刪除學生對象 iterator iterator = students.iterator(); while(iterator.hasnext() student st=(student)iterator.next(); if(st.getid()=id) iterator.remove(); void deletestudentbyname(string name)/根據(jù)姓名刪除學生對象 iterator iterator = students.iterator(); while(iterator.hasnext() student st=(student)it

9、erator.next(); if(st.getname()=name) iterator.remove(); void deletestudentbyage(int age)/根據(jù)年齡刪除學生對象 iterator iterator = students.iterator(); while(iterator.hasnext() student st=(student)iterator.next(); if(st.getage()=age) iterator.remove(); list findbyname(string name) list studs=new arraylist(); f

10、or(int i=0;istudents.size();i+)student stud = (student)students.get(i);if(stud.getname().equals(name)studs.add(stud);return studs;list findbyage(int age)list studs=new arraylist(); for(int i=0;istudents.size();i+)student stud = (student)students.get(i);if(stud.getage()=age)studs.add(stud);return stu

11、ds;3、 使用map管理對象集合1) 新建一個包mapexample2) 在這個包中新建三個類:student類,studentmap類,studentmaptest類。參考代碼student.java, studentmap.java,studentmaptest.java3) 完善上面三個類,相關要求參考源代碼程序的注釋,即根據(jù)要求修改源代碼程序,給出具體的實現(xiàn)代碼(不使用泛型類)。 void deletestudentbyname(string name)/根據(jù)學生姓名刪除學生對象 collection values=students.values(); iterator it=val

12、ues.iterator(); while(it.hasnext() if(it.next().getname().equals(name) it.remove(); void deletestudentbyage(int age)/根據(jù)學生年齡刪除學生對象 collection values=students.values(); iterator it=values.iterator(); while(it.hasnext() if(it.next().getage()=age) it.remove(); student findbyname(string name)int a=0;coll

13、ection values=students.values(); iterator it=values.iterator(); while(it.hasnext() if(it.next().getname().equals(name) a+; int b=0; student s=new studenta; collection values1=students.values(); iterator it1=values1.iterator(); while(it1.hasnext() student ss=it1.next(); if(ss.getname().equals(name) s

14、b=ss; b+; return s;student findbyage(int age)int a=0;collection values=students.values(); iterator it=values.iterator(); while(it.hasnext() if(it.next().getage()=age) a+; int b=0; student s=new studenta; collection values1=students.values(); iterator it1=values1.iterator(); while(it1.hasnext() stude

15、nt ss=it1.next(); if(ss.getage()=age) sb=ss; b+; return s;4) 新創(chuàng)建mapexample2包,重新設計設計上述程序(新程序都屬于這個包),這時需要使用泛型類,即出現(xiàn)的map、treemap或hashmap都使用泛型。private map students = new hashmap();void addstudent(student student)/添加一個學生對象 students.put(new integer(student.getid(),student);student findbyid(string id)return

16、 students.get(new integer(id);4、 使用set管理對象集合1) 新建一個包setexample2) 在這個包中新建三個類:student類,studentset類,studentsettest類。參考代碼:這三個類的參考代碼見student.java, studentset.java,studentsettest.java3) 完善上面三個類,相關要求參考源代碼程序的注釋,即根據(jù)要求修改源代碼程序,給出具體的實現(xiàn)代碼(不使用泛型類)。 void deletestudentbyid(string id)/根據(jù)學號刪除學生對象 for(int i=0;istudent

17、s.size();i+)student stud = (student)students.toarray()i;if(stud.getid().equalsignorecase(id)students.remove(stud); void deletestudentbyname(string name)/根據(jù)姓名刪除學生對象 for(int i=0;istudents.size();i+)student stud = (student)students.toarray()i;if(stud.getname().equalsignorecase(name)students.remove(stud

18、); void deletestudentbyage(int age)/根據(jù)年齡刪除學生對象 for(int i=0;istudents.size();i+)student stud = (student)students.toarray()i;if(stud.getage()=age)students.remove(stud); student findbyname(string name)int a=0;for(int i=0;istudents.size();i+)student stud = (student)students.toarray()i;if(stud.getname().

19、equalsignorecase(name)a+;student st=new studenta;int b=0;for(int i=0;istudents.size();i+)student stud = (student)students.toarray()i;if(stud.getname().equalsignorecase(name)stb=stud; b+;return st;student findbyage(int age)int a=0;for(int i=0;istudents.size();i+)student stud = (student)students.toarr

20、ay()i;if(stud.getage()=age)a+;student st=new studenta;int b=0;for(int i=0;istudents.size();i+)student stud = (student)students.toarray()i;if(stud.getage()=age)stb=stud; b+;return st;4) 新創(chuàng)建setexample2包,重新設計設計上述程序(新程序都屬于這個包),這時需要使用泛型類,即出現(xiàn)的set、treeset或hashset都使用泛型。 注意:student類實現(xiàn)comparable接口的作用。 void de

21、letestudentbyid(string id)/根據(jù)學號刪除學生對象 iteratorit=students.iterator(); while(it.hasnext() if(it.next().getid().equalsignorecase(id) it.remove(); void deletestudentbyname(string name)/根據(jù)姓名刪除學生對象 iteratorit=students.iterator(); while(it.hasnext() if(it.next().getname().equalsignorecase(name) it.remove(

22、); void deletestudentbyage(int age)/根據(jù)年齡刪除學生對象 iteratorit=students.iterator(); while(it.hasnext() if(it.next().getage()=age) it.remove(); public class student implements comparable /實現(xiàn)comparable接口對于treeset排序有用public int compareto(object arg0) student stud = (student)arg0;return this.getid().comparet

23、o(stud.getid();實現(xiàn)是自定義排序功能5、 設計一個自定義的集合類四. 實驗結果與分析1. 請說明采用接口變量操作集合對象的方式,并闡述這么做的主要優(yōu)點。提示:在“使用list管理對象集合”的實驗中,linkedlist、arraylist兩個類都可以管理一批對象,但是程序中使用list接口變量引用linkedlist、arraylist對象,即使用如下方式:private list students = new arraylist();而不是直接使用linkedlist、arraylist類型變量,比如:private arraylist students = new array

24、list();這樣做有什么用意,有什么好處? 這是一種很好的設計模式.一個接口有多種實現(xiàn),這種寫法是java面向對象的一種思想,依賴倒置原則,即依賴于抽象不依賴于實現(xiàn)(具體)。 給調用者提供的應該是接口或者抽象類,而實現(xiàn)者可以實現(xiàn)或者繼承接口或者抽象類來滿足調用者,這樣調用者不必知道實現(xiàn)者怎樣操作,實現(xiàn)者也可以根據(jù)具體情況去實現(xiàn),這樣去除了耦合。這就是java設計模式的基礎思想之一。 從java語法上,這種方式是使用接口引用指向具體實現(xiàn),這樣大大提高了代碼使用的靈活性。2.請說明linkedlist、arraylist有何不同,各自適用于哪些場合?linkedlist:采用鏈表來管理集合的元素

25、。優(yōu)點是可以方便地進行元素的增加,刪除。即元素個數(shù)變化的代價較小,但是查詢性能比數(shù)組差。arraylist:使用可變長度的數(shù)組來管理集合的元素。優(yōu)點是查詢性能比鏈表好,缺點是長度不可變化,刪除元素代價大。 linkedlist適用于元素增加刪除頻繁的場合。arraylist適用于查詢元素較頻繁的場合3.請說明hashset,treeset有何不同,各自適用于哪些場合?1、treeset中的數(shù)據(jù)是自動排好序的,不允許放入null值2、hashset中的數(shù)據(jù)是無序的,可以放入null,但只能放入一個null,兩者中的值都不能重復,就如數(shù)據(jù)庫中唯一約束3、hashset要求放入的對象必須實現(xiàn)hashcode()方法,放入的對象,是以hashcode碼作為標識的,而具有相同內容的string對象,hashcode是一樣,所以放入的內容不能重復。

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論