2017—2018 实验报告:实验一
實(shí)驗(yàn)一:實(shí)驗(yàn)報(bào)告
課程:程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)
班級(jí): 1623
姓名: 張旭升
學(xué)號(hào):20162329
指導(dǎo)教師:婁嘉鵬 王志強(qiáng)
實(shí)驗(yàn)日期:9月25日
實(shí)驗(yàn)密級(jí): 非密級(jí)
預(yù)習(xí)程度: 已預(yù)習(xí)
必修/選修: 必修
實(shí)驗(yàn)序號(hào): cs_29
實(shí)驗(yàn)名稱: Java線性表的應(yīng)用,實(shí)現(xiàn)和分析
實(shí)驗(yàn)內(nèi)容
1. Java中的線性表的測試:過程,問題
2. Java中的線性表的應(yīng)用:過程,問題
3. 順序表的實(shí)現(xiàn)(偽代碼,產(chǎn)品代碼,測試代碼):過程(分析,設(shè)計(jì),實(shí)現(xiàn),測試),問題
4. 鏈表的實(shí)現(xiàn)(偽代碼,產(chǎn)品代碼,測試代碼):過程(分析,設(shè)計(jì),實(shí)現(xiàn),測試),問題
5. Java ArrayList,LinkedList源碼分析:過程,學(xué)到的技巧
實(shí)驗(yàn)要求
1.沒有Linux基礎(chǔ)的同學(xué)建議先學(xué)習(xí)《Linux基礎(chǔ)入門(新版)》《Vim編輯器》 課程
完成實(shí)驗(yàn)、撰寫實(shí)驗(yàn)報(bào)告,實(shí)驗(yàn)報(bào)告以博客方式發(fā)表在博客園,注意實(shí)驗(yàn)報(bào)告重點(diǎn)是 運(yùn)行結(jié)果,遇到的問題(工具查找,安裝,使用,程序的編輯,調(diào)試,運(yùn)行等)、解決 辦法(空洞的方法如“查網(wǎng)絡(luò)”、“問同學(xué)”、“看書”等一律得0分)以及分析(從中可 以得到什么啟示,有什么收獲,教訓(xùn)等)。報(bào)告可以參考范飛龍老師的指導(dǎo)
嚴(yán)禁抄襲,有該行為者實(shí)驗(yàn)成績歸零,并附加其他懲罰措施。
實(shí)驗(yàn)過程
一.Java中線性表的測試
1.MyList類:
Java中提供了兩種線性表,分別是ArrayList和LinkedList,我分別對(duì)它們每種類的其中三個(gè)主要方法進(jìn)行了Junit單元測試:
| boolean : isEmpty() | boolean : contains(Object o) |
| boolean : add(Object o) | boolean : add(Object o) |
| Object : remove(int index) | boolean : remove(Object o) |
注意:
在測試中我發(fā)現(xiàn),兩種線性表在Java源代碼中是受保護(hù)無法直接進(jìn)行單元測試的,我只能自己寫一個(gè)MyList來繼承上面兩個(gè)類,然后通過將需要測試的方法復(fù)寫一下只需要調(diào)用父類的該方法就可以直接進(jìn)行單元測試了。
2.測試結(jié)果及代碼
測試代碼
ArrayList測試代碼
LinkedList測試代碼
測試截圖
二.用Java線性表實(shí)現(xiàn)有序線性表的合并
實(shí)現(xiàn)代碼
- 實(shí)現(xiàn)代碼
測試代碼
測試截圖
三.用數(shù)組實(shí)現(xiàn)線性表
1.實(shí)現(xiàn)代碼分析:
創(chuàng)建數(shù)組線性表的思路和課上的Bag類是很類似的,具體做法也是在Bag類的基礎(chǔ)上進(jìn)行了一些功能的改進(jìn),比如實(shí)現(xiàn)了存儲(chǔ)空間的自增長等
思路:
在每次往數(shù)組中線性的添加元素時(shí)都會(huì)進(jìn)行一個(gè)判斷,如果數(shù)組已經(jīng)沒有空位時(shí),就會(huì)進(jìn)行一個(gè)變換的操作,新建一個(gè)多10位的數(shù)組(數(shù)組初始大小為10)然后將原數(shù)組中的元素遍歷出來放入新建數(shù)組,然后將新建數(shù)組賦給原數(shù)組的引用,即使數(shù)組長度增加了10
2.實(shí)現(xiàn)代碼及測試
- 實(shí)現(xiàn)代碼
- 測試代碼
3.測試截圖
四.用鏈表實(shí)現(xiàn)線性表
1.實(shí)現(xiàn)代碼分析:
定義一個(gè)鏈表的類,然后在類中創(chuàng)建兩個(gè)變量,一個(gè)為泛型變量,一個(gè)是該類的對(duì)象,這個(gè)類的對(duì)象將會(huì)作為一個(gè)指針,在鏈表中每創(chuàng)建一個(gè)新的元素時(shí),就會(huì)> > 實(shí)將指針實(shí)例化。
2.實(shí)現(xiàn)代碼及測試代碼
- 實(shí)現(xiàn)代碼
- 測試代碼
3.測試截圖
五.ArrayList與LinkedList源碼分析
1.源碼調(diào)取
我所分析的源碼是從IDEA中直接調(diào)取的,具體操作是在IDEA中連按兩次Shift鍵就會(huì)彈出一個(gè)搜索框,然后在搜索框中分別搜索ArrayList和LinkedList就可以調(diào)出 這兩個(gè)類的源代碼
2.源碼分析
1.ArrayList是實(shí)現(xiàn)了基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu)。
2.對(duì)于隨機(jī)訪問get和set,ArrayList覺得優(yōu)于LinkedList,因?yàn)長inkedList要移動(dòng)指針。
3.對(duì)于新增和刪除操作add和remove,LinedList比較占優(yōu)勢(shì),因?yàn)锳rrayList要移動(dòng)數(shù)據(jù)。
參考資料:
java集合框架05——ArrayList和LinkedList的區(qū)別
Java中ArrayList和LinkedList區(qū)別
轉(zhuǎn)載于:https://www.cnblogs.com/Zhangxusheng/p/7612731.html
總結(jié)
以上是生活随笔為你收集整理的2017—2018 实验报告:实验一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript用户登录_SAP H
- 下一篇: 项目实施计划方案