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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第7周-集合

發布時間:2023/12/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第7周-集合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 本周學習總結

以你喜歡的方式(思維導圖或其他)歸納總結集合相關內容。

2. 書面作業

1ArrayList代碼分析

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; }根據輸入的參數o判斷遍歷ArrayList的時候使用的方法,若o為equals,則返回序號,如果o為null,就沒有equals方法。

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; }刪掉某個元素后,把后面的元素全部前移,最后再把size-1位置賦null。

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

使用ArrayList存儲數據是數據類型是object類,它是所有類的父類,不用考慮元素的類型,像1.1,1.2中的ArrayList里元素也沒有定義。

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(minCapacity); } private void grow(int minCapacity) {// overflow-conscious codeint oldCapacity = elementData.length;int newCapacity = oldCapacity + (oldCapacity >> 1); 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); } 內部數組容量不夠時,會自動調用grow方法生成一個1.5倍大的數組將原數組元素放進去。

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

/*** Checks if the given index is in range. If not, throws an appropriate* runtime exception. This method does *not* check if the index is* negative: It is always used immediately prior to an array access,* which throws an ArrayIndexOutOfBoundsException if index is negative.*/ private void rangeCheck(int index) {if (index >= size)throw new IndexOutOfBoundsException(outOfBoundsMsg(index)); }生命為private,則方法只能在類內部實現,而rangeCheck方法只是用來判斷數組是否超界,只在該類內部有效。

2HashSet原理

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

元素加入HashSet中時,HashSet會調用HashCodeC()方法,得到一個'hashcode'值確定元素在列表中的位置;如果桶中已有其他元素,則調用equals()方法與已有元素進行比較。;如果比較結果為真,則用新的值替換舊的值;如果比較結果為假,則將該元素插入桶中。

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

3ArrayListIntegerStack

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

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

5-1中的ArrayListIntegerStack不需要定義數組的大小,list可以對初始容量賦值,而在5-3中的ArrayIntegerStack就需要自己定義數組的大小,需要指針。

2 簡單描述接口的好處.

不同的對象可以引同一個方法,可以用接口引用了類,使用相同的方法名,不同的實現。

4Stack and Queue

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

package project002;import java.util.Scanner; import java.util.Stack;public class Main201521044152 {public static void main(String[] args) {Scanner in = new Scanner(System.in);String str = in.next();System.out.println(isPalindromeNumber(str));}public static boolean isPalindromeNumber(String str){ArrayListTStack myStack = new ArrayListTStack();char[] charArray = str.toCharArray();for (int i = 0; i < charArray.length / 2 ; i++) {myStack.push(String.valueOf(charArray[i])); }for(int i = charArray.length / 2 ; i < charArray.length; i++ ){if( !myStack.pop().equals(String.valueOf(charArray[i])) ) return false;}return true;}}

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

建立兩個隊列,奇數放在List1里,偶數放在ListB里,List1輸出兩個然后Listb輸出一個,如果一個隊列為空,則跳出循環并且輸出隊列的剩余元素。for (int i = 0; i <= n; i++) {int x = scanner.nextInt();n=i;continue;if (x % 2 !== 0) {List1.add(x);} else {List2.add(x);}}

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

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

1 實驗總結

要對單詞的字母順序排序后輸出,需要用到TreeSet;空格為界限分開每個單詞。

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

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

1 偽代碼

2 實驗總結

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

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

2 使用集合類改進大作業

參考資料:
JTable參考項目

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

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

1. 碼云代碼提交記錄

在碼云的項目中,依次選擇“統計-Commits歷史-設置時間段”, 然后搜索并截圖

2. PTA實驗

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

轉載于:https://www.cnblogs.com/mz201521044152/p/6681706.html

總結

以上是生活随笔為你收集整理的第7周-集合的全部內容,希望文章能夠幫你解決所遇到的問題。

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