201521123032 《Java程序设计》第7周学习总结
1. 本周學習總結
以你喜歡的方式(思維導圖或其他)歸納總結集合相關內容。
2. 書面作業
ArrayList代碼分析
1.1 解釋ArrayList的contains源代碼
在contains方法中調用indexOF方法,首先比較下標o,如果o==null那么elementData[]中是否==null,如果有就返回下標,如果沒有就返回-1。如果o不為null,那么就用equals比較o與elementData[]有沒有相同的情況,若有就返回下標,沒有就返回-1。
1.2 解釋E remove(int index)源代碼
首先檢查是否在邊界范圍內,用E oldValue保存原來的,判斷后把數組前移,最后一位置為null。
1.3 結合1.1與1.2,回答ArrayList存儲數據時需要考慮元素的類型嗎?
不需要,因為是Object類,所有類都是它的子類,都會被強制轉換類型。
1.4 分析add源代碼,回答當內部數組容量不夠時,怎么辦?
擴充容量到所需的容量大小。
1.5 分析private void rangeCheck(int index)源代碼,為什么該方法應該聲明為private而不聲明為public?
這個是內部使用的,就是查看是否出界,沒必要給外界進行修改。
HashSet原理
2.1 將元素加入HashSet(散列集)中,其存儲位置如何確定?需要調用那些方法?
HashSet內部實際是使用了HashMap,
2.2 選做:嘗試分析HashSet源代碼后,重新解釋1.1
ArrayListIntegerStack
題集jmu-Java-05-集合之5-1 ArrayListIntegerStack
3.1 比較自己寫的ArrayListIntegerStack與自己在題集jmu-Java-04-面向對象2-進階-多態、接口與內部類中的題目5-3自定義接口ArrayIntegerStack,有什么不同?(不要出現大段代碼)
ArrayListIntegerStack是用ArrayList來實現,ArrayIntegerStack是用Integer數組來實現。ArrayIntegerStack需要用到top而ArrayListIntegerStack不需要。
3.2 簡單描述接口的好處.
實現了擴展功能,對于這題利用接口IntegerStack操作不同的方法。
Stack and Queue
4.1 編寫函數判斷一個給定字符串是否是回文,一定要使用棧,但不能使用java的Stack類(具體原因自己搜索)。請粘貼你的代碼,類名為Main你的學號。
#include <iosteam> #include <string> using namespace std; #define EMPTY 0 #define FULL 10000 #define MAX 10000 typedef char data; typedef struct elem { data d; struct elem *next; }elem; typedef struct stack { int cnt; elem *top; }stack; void initialize(stack *stk); void push(data d, stack *stk); data pop(stack *stk); bool empty(const stack *stk); bool full(const stack *stk); //棧操作函數 void initialize(stack *stk) { stk->cnt = 0; stk->top = NULL; } bool empty(const stack *stk) { return stk->cnt == EMPTY; } bool full(const stack *stk) { return stk->cnt == FULL; } void push(data d, stack *stk) { elem *p; if (!full(stk)) { p = (elem *)malloc(sizeof(elem)); p->d = d; p->next = stk->top; stk->top = p; stk->cnt++; } } data pop(stack *stk) { data d; elem *p; if(!empty(stk)) { d = stk->top->d; p = stk->top; stk->top = stk->top->next; stk->cnt--; delete p; } return d; } int main201521123032(void) { data input[MAX]; stack temp; int i = 0; int flag = 0; initialize(&temp); //初始化臨時棧 cin>>&input; //輸入字符串 while (input[i] != '@') {//字符串入棧 push(input[i], &temp); i++; } while (!empty(&temp)) {//字符依次出棧和字符數組比較,判斷是否回文數 if (temp.top->d == input[flag]) { pop(&temp); flag++; } else { cout<<"此字符序列不是回文數!\n"; break; } } if (empty(&temp)) cout<<"此字符序列是回文數!\n"; return 1; }參考[1](http://wenda.so.com/q/1362524971061758)
4.2 題集jmu-Java-05-集合之5-6 銀行業務隊列簡單模擬。(不要出現大段代碼)
統計文字中的單詞數量并按單詞的字母順序排序后輸出
題集jmu-Java-05-集合之5-2 統計文字中的單詞數量并按單詞的字母順序排序后輸出 (不要出現大段代碼)
5.1 實驗總結
每個單詞出現只要統計一次,而Set的實現類中用TreeSet對對象進行排序
3. 碼云上代碼提交記錄及PTA實驗總結
題目集:jmu-Java-05-集合
3.1. 碼云代碼提交記錄
在碼云的項目中,依次選擇“統計-Commits歷史-設置時間段”, 然后搜索并截圖
3.2. PTA實驗
編程(5-1, 5-2, 5-3(選做), 5-6)
實驗總結已經在作業中體現,不用寫。
轉載于:https://www.cnblogs.com/hdf433/p/6682920.html
總結
以上是生活随笔為你收集整理的201521123032 《Java程序设计》第7周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OAuth2认证有一定的了解
- 下一篇: 电脑版生死狙击账号密码是多少(生死狙击账