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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

第7周-集合

發(fā)布時(shí)間:2023/12/18 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第7周-集合 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 本周學(xué)習(xí)總結(jié)

以你喜歡的方式(思維導(dǎo)圖或其他)歸納總結(jié)集合相關(guān)內(nèi)容。

2. 書面作業(yè)

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; }根據(jù)輸入的參數(shù)o判斷遍歷ArrayList的時(shí)候使用的方法,若o為equals,則返回序號(hào),如果o為null,就沒(méi)有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; }刪掉某個(gè)元素后,把后面的元素全部前移,最后再把size-1位置賦null。

3 結(jié)合1.1與1.2,回答ArrayList存儲(chǔ)數(shù)據(jù)時(shí)需要考慮元素的類型嗎?

使用ArrayList存儲(chǔ)數(shù)據(jù)是數(shù)據(jù)類型是object類,它是所有類的父類,不用考慮元素的類型,像1.1,1.2中的ArrayList里元素也沒(méi)有定義。

4 分析add源代碼,回答當(dāng)內(nèi)部數(shù)組容量不夠時(shí),怎么辦?

public boolean add(E e) {ensureCapacityInternal(size + 1); // ensureCapacityInternal用來(lái)調(diào)整容量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); } 內(nèi)部數(shù)組容量不夠時(shí),會(huì)自動(dòng)調(diào)用grow方法生成一個(gè)1.5倍大的數(shù)組將原數(shù)組元素放進(jìn)去。

5 分析private void rangeCheck(int index)源代碼,為什么該方法應(yīng)該聲明為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,則方法只能在類內(nèi)部實(shí)現(xiàn),而rangeCheck方法只是用來(lái)判斷數(shù)組是否超界,只在該類內(nèi)部有效。

2HashSet原理

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

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

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

3ArrayListIntegerStack

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

1 比較自己寫的ArrayListIntegerStack與自己在題集jmu-Java-04-面向?qū)ο?-進(jìn)階-多態(tài)、接口與內(nèi)部類中的題目5-3自定義接口ArrayIntegerStack,有什么不同?(不要出現(xiàn)大段代碼)

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

2 簡(jiǎn)單描述接口的好處.

不同的對(duì)象可以引同一個(gè)方法,可以用接口引用了類,使用相同的方法名,不同的實(shí)現(xiàn)。

4Stack and Queue

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

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 銀行業(yè)務(wù)隊(duì)列簡(jiǎn)單模擬。(不要出現(xiàn)大段代碼)

建立兩個(gè)隊(duì)列,奇數(shù)放在List1里,偶數(shù)放在ListB里,List1輸出兩個(gè)然后Listb輸出一個(gè),如果一個(gè)隊(duì)列為空,則跳出循環(huán)并且輸出隊(duì)列的剩余元素。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統(tǒng)計(jì)文字中的單詞數(shù)量并按單詞的字母順序排序后輸出

題集jmu-Java-05-集合之5-2 統(tǒng)計(jì)文字中的單詞數(shù)量并按單詞的字母順序排序后輸出 (不要出現(xiàn)大段代碼)

1 實(shí)驗(yàn)總結(jié)

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

6選做:加分考察-統(tǒng)計(jì)文字中的單詞數(shù)量并按出現(xiàn)次數(shù)排序

題集jmu-Java-05-集合之5-3 統(tǒng)計(jì)文字中的單詞數(shù)量并按出現(xiàn)次數(shù)排序(不要出現(xiàn)大段代碼)

1 偽代碼

2 實(shí)驗(yàn)總結(jié)

7面向?qū)ο笤O(shè)計(jì)大作業(yè)-改進(jìn)

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

2 使用集合類改進(jìn)大作業(yè)

參考資料:
JTable參考項(xiàng)目

3. 碼云上代碼提交記錄及PTA實(shí)驗(yàn)總結(jié)

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

1. 碼云代碼提交記錄

在碼云的項(xiàng)目中,依次選擇“統(tǒng)計(jì)-Commits歷史-設(shè)置時(shí)間段”, 然后搜索并截圖

2. PTA實(shí)驗(yàn)

編程(5-1, 5-2, 5-3(選做), 5-6)
實(shí)驗(yàn)總結(jié)已經(jīng)在作業(yè)中體現(xiàn),不用寫。

轉(zhuǎn)載于:https://www.cnblogs.com/mz201521044152/p/6681706.html

總結(jié)

以上是生活随笔為你收集整理的第7周-集合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。