201621123068 作业08-集合
1. 本周學(xué)習(xí)總結(jié)
2. 書面作業(yè)
1. ArrayList代碼分析
1.1 解釋ArrayList的<contains>源代碼
答:源代碼
public boolean contains(Object o) {
return indexOf(o) >= 0;}
public int indexOf(Object o) {
if (o == null) {for (int i = 0; i < size; i++)if (elementData[i]==null)return i;
} else {for (int i = 0; i < size; i++)if (o.equals(elementData[i]))return i;
}
return -1;
} 解釋:contains方法先判斷對象是否為null,是則查看列表中是否包含null,包含返回下標(biāo)。若對象不為null時,若該列表中包含指定元素則返回true。
1.2 解釋<E remove(int index)>源代碼
答:源代碼
public E remove(int index) {rangeCheck(index);modCount++;E oldValue = elementData(index);int numMoved = size - index - 1;if (numMoved > 0)System.arraycopy(elementData, index+1, elementData, index,numMoved);elementData[--size] = null; return oldValue;
} 解釋:先判斷傳入的index的值是否超過了size,再取出index對應(yīng)的元素下標(biāo),之后把元素全部向前進(jìn)一位,最終返回被刪除的元素,執(zhí)行size減1,將最后一個元素置為null
1.3 結(jié)合1.1與1.2,回答ArrayList存儲數(shù)據(jù)時需要考慮元素的具體類型嗎?
答:不需要
原因:ArrayList的實質(zhì)是一個object數(shù)組,ArrayList類眾多方法的參數(shù)是Object類,而Object類是所有類的父類。
1.4 分析add源代碼,回答當(dāng)內(nèi)部數(shù)組容量不夠時,怎么辦?
答:源代碼
解決辦法:如果內(nèi)存數(shù)組容量不夠時,數(shù)組容量會進(jìn)行自動擴(kuò)容。,將數(shù)組容量擴(kuò)充為1.5倍
1.5 分析<private void rangeCheck(int index)>源代碼,為什么該方法應(yīng)該聲明為private而不聲明為public?
答:源代碼
private void rangeCheck(int index) {if (index >= size)throw new IndexOutOfBoundsException(outOfBoundsMsg(index));} 解釋:此方法并不需要讓人知道操作過程,所以聲明為private而不聲明為public。
2. HashSet原理
2.1 將元素加入HashSet(散列集)中,其存儲位置如何確定?需要調(diào)用那些方法?
答:首先使用hashCode()方法來計算哈希值從而得到存儲位置,判斷是否存在重復(fù)元素時,調(diào)用到equal()方法來比較,若不同則添加元素到尾部,相同則不添加
2.2 將元素加入HashSet中的時間復(fù)雜度是多少?是O(n)嗎?(n為HashSet中已有元素個數(shù))
答:時間復(fù)雜度為O(1),計算哈希值的次數(shù)是常量
3. ArrayListIntegerStack
題集jmu-Java-05-集合之ArrayListIntegerStack
3.1 比較自己寫的ArrayListIntegerStack與自己在題集jmu-Java-04-面向?qū)ο?-進(jìn)階-多態(tài)、接口與內(nèi)部類中的題目自定義接口ArrayIntegerStack,有什么不同?(不要出現(xiàn)大段代碼)
答:數(shù)據(jù)類型不同,一個使用Array實現(xiàn),一個使用列表List實現(xiàn)
3.2 結(jié)合該題簡單描述接口的好處,需以3.1為例詳細(xì)說明,不可泛泛而談。
答:<ArrayListIntegerStack>和<ArrayIntegerStack>繼承了同一個接口,只需要修改方法就可實現(xiàn)操作不同的類。
4. Stack and Queue
4.1 編寫函數(shù)判斷一個給定字符串是否是回文,一定要使用棧(請利用Java集合中已有的類),但不能使用java的Stack類(具體原因自己搜索)與數(shù)組。請粘貼你的代碼,類名為Main你的學(xué)號。
答:
4.2 題集jmu-Java-05-集合之銀行業(yè)務(wù)隊列簡單模擬(只粘貼關(guān)鍵代碼)。請務(wù)必使用Queue接口,并說明你使用了Queue接口的哪一個實現(xiàn)類?
答:使用LinkedList實現(xiàn)
5. 統(tǒng)計文字中的單詞數(shù)量并按單詞的字母順序排序后輸出
題集jmu-Java-05-集合之5-2 統(tǒng)計文字中的單詞數(shù)量并按單詞的字母順序排序后輸出 (作業(yè)中不要出現(xiàn)大段代碼)
5.1 實驗總結(jié)
答:本題使用set中的Treeset來做
3.碼云及PTA
題目集:jmu-Java-05-集合
3.1. 碼云代碼提交記錄
3.2 截圖PTA題集完成情況圖
3.3 統(tǒng)計本周完成的代碼量
| 周次 | 總代碼量 | 新增代碼量 | 總文件數(shù) | 新增文件數(shù) |
|---|---|---|---|---|
| 2 | 625 | 625 | 99 | 99 |
| 3 | 1785 | 1025 | 172 | 73 |
| 5 | 3634 | 1849 | 259 | 87 |
| 6 | 5500 | 1866 | 374 | 115 |
| 7 | 6073 | 573 | 421 | 47 |
| 8 | 6799 | 726 | 486 | 65 |
| 9 | 7479 | 680 | 607 | 121 |
轉(zhuǎn)載于:https://www.cnblogs.com/jmu201621123068/p/7819286.html
總結(jié)
以上是生活随笔為你收集整理的201621123068 作业08-集合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下find命令的使用和总结
- 下一篇: Appium的Java封装