日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

201521123052《Java程序设计》第7周学习总结

發布時間:2024/4/17 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 201521123052《Java程序设计》第7周学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 本周學習總結

參考資料:
XMind

2. 書面作業

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;}public boolean equals(Object obj) {return (this == obj);}

答:根據輸入的參數o判斷遍歷ArrayList的時候使用的方法,如果其為null,則遍歷時判斷elementData[i]是否為null,如果其不為null,則遍歷時使用equals方法。

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; // clear to let GC do its workreturn oldValue; } private void rangeCheck(int index) {if (index >= size)throw new IndexOutOfBoundsException(outOfBoundsMsg(index)); }

答:先使用rangeCheck方法判斷輸入的參數index是否超出大小范圍,如果是,則輸出IndexOutOfBoundsException異常,如果不是,則刪除指定的元素,之后再將刪除位置之后的元素往前移,最后使得size-1的位置的值為null,并使GC clear it。

1.3 結合1.1與1.2,回答ArrayList存儲數據時需要考慮元素的類型嗎?

答:ArrayList儲存的數據類型都是Object類,Object類是所有類的父類,存儲數據時無需考慮元素的類型。1.1與1.2的源代碼中,并沒有對ArrayList的數據類型有任何定義,所以不需要考慮。

1.4 分析add源代碼,回答當內部數組容量不夠時,怎么辦?

public boolean add(E e) {ensureCapacityInternal(size + 1); // ensureCapacityInternal用來調整容量elementData[size++] = e;return true; } private void ensureCapacityInternal(int minCapacity) {if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);}ensureExplicitCapacity(minCapacity); }modCount++;// overflow-conscious codeif (minCapacity - elementData.length > 0) //如果超出容量,則調用grow方法增加容量grow(minCapacity); } private void grow(int minCapacity) {// overflow-conscious codeint oldCapacity = elementData.length;int newCapacity = oldCapacity + (oldCapacity >> 1); //增加原來容量的一半(右移一位就是/2),也就是說新List的容量是舊的1.5倍if (newCapacity - minCapacity < 0)newCapacity = minCapacity;if (newCapacity - MAX_ARRAY_SIZE > 0)newCapacity = hugeCapacity(minCapacity);// minCapacity is usually close to size, so this is a win:elementData = Arrays.copyOf(elementData, newCapacity); //把舊數組拷貝至新數組,這里說明了并不是增加原來數組的大小,而是引用了一個大小為原來數組1.5倍的新數組。 }

1.5 分析private void rangeCheck(int index)源代碼,為什么該方法應該聲明為private而不聲明為public?

private void rangeCheck(int index) {if (index >= size)throw new IndexOutOfBoundsException(outOfBoundsMsg(index)); }

答:使用private聲明,說明此方法只在代碼內部進行,而不能被用戶獲取到,而外部確實也沒有用到這個方法的地方,這個方法主要是限制語句的操作范圍,讓使用者可以清晰地發現自己的語句操作越界,而這個rangeCheck操作主要是在代碼內部進行,所以聲明為private而不聲明為public。

2.HashSet原理

2.1 將元素加入HashSet(散列集)中,其存儲位置如何確定?需要調用那些方法?

答:HashSet用鏈表數組實現存儲,每個列表被稱為桶,添加元素時,HashSet會先調用該對象的hashCode()方法得到其hashCode值,根據該值決定該對象在桶中存儲位置。如果桶中已有其他元素,則調用加入對象的equals()方法與已有元素進行比較。如果比較結果為假,則將對象插入桶中。如果比較結果為真,則用新的值替換舊的值。如果有兩個元素通過equals()方法比較返回true,而它們的hashCode()方法返回值不等,HashSet也會將它們存儲在不同的位置。

2.2 選做:嘗試分析HashSet源代碼后,重新解釋1.1

3.ArrayListIntegerStack

題集jmu-Java-05-集合之5-1 ArrayListIntegerStack

3.1 比較自己寫的ArrayListIntegerStack與自己在題集jmu-Java-04-面向對象2-進階-多態、接口與內部類中的題目5-3自定義接口ArrayIntegerStack,有什么不同?(不要出現大段代碼)

public ArrayIntegerStack(int n) {this.arr = new Integer[n]; } public ArrayListIntegerStack(){this.list = new ArrayList<Integer>(); }

答:使用內部數組,需提前定好數組大小;使用ArrayList存儲,可自動擴容。

3.2 簡單描述接口的好處.

答:在功能相類似具體方法又不同時,可以使用相同的方法名,不同的實現,從而根據自己的需求,通過不同的方式來實現。

4.Stack and Queue

4.1 編寫函數判斷一個給定字符串是否是回文,一定要使用棧,但不能使用java的Stack類(具體原因自己搜索)。請粘貼你的代碼,類名為Main你的學號。

4.2 題集jmu-Java-05-集合之5-6 銀行業務隊列簡單模擬。(不要出現大段代碼)

5.統計文字中的單詞數量并按單詞的字母順序排序后輸出

題集jmu-Java-05-集合之5-2 統計文字中的單詞數量并按單詞的字母順序排序后輸出 (不要出現大段代碼)

if(set.size() < 10)for(String str : set){System.out.println(str);}else { for (int i = 0; i < 10 ; i++) {System.out.println(set.toArray()[i]);}

5.1 實驗總結

答:使用TreeSet時,因為其本身就已經有進行排序,只需按要求遍歷輸出即可。

6.選做:加分考察-統計文字中的單詞數量并按出現次數排序

題集jmu-Java-05-集合之5-3 統計文字中的單詞數量并按出現次數排序(不要出現大段代碼)

6.1 偽代碼

6.2 實驗總結

7.面向對象設計大作業-改進

7.1 完善圖形界面(說明與上次作業相比增加與修改了些什么)

7.2 使用集合類改進大作業

參考資料:
JTable參考項目

3. 碼云上代碼提交記錄及PTA實驗總結

題目集:jmu-Java-05-集合

3.1. 碼云代碼提交記錄

3.2. PTA實驗

編程(5-1, 5-2, 5-3(選做), 5-6)
實驗總結已經在作業中體現,不用寫。

轉載于:https://www.cnblogs.com/JML1225/p/6680841.html

總結

以上是生活随笔為你收集整理的201521123052《Java程序设计》第7周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。