201421123042 《Java程序設計》第9周學習總結

1. 本週學習總結

1.1 以你喜歡的方式(思惟導圖或其餘)概括總結集合與泛型相關內容。

2. 書面做業

本次做業題集集合java

1. List中指定元素的刪除(題集題目)

1.1 實驗總結。並回答:列舉至少2種在List中刪除元素的方法。

實驗總結:這題考到了關於List的刪除,當從前面日後遍歷的時候要考慮到刪除了元素時後面的元素的下標都會前移一個位置。
在List中刪除元素的方法:
刪除大於等於5的數字:學習

//測試數據
        List<Integer> list = new ArrayList<Integer>();
        for(int i=0;i<10;i++) {
            list.add(i);
        }
//方法一
        for(int i=0;i<list.size();i++) {
            if(list.get(i)>=5) {
                list.remove(list.get(i));
                i--;
            }
        }

        System.out.println(list);

運行結果:
測試

//方法二
        for(int i=list.size()-1;i>=0;i--)
            if(list.get(i)>=5)
                list.remove(list.get(i));

        System.out.println(list);

運行結果:
設計

2. 統計文字中的單詞數量並按出現次數排序(題集題目)

2.1 僞代碼(不得複製代碼,不然扣分)

新建Map<String,Integer>對象map來存放單詞及其出現次數
WHILE 取得的單詞不爲"!!!!!"
    IF 當前單詞不存在map中
        將單詞添加到map中,設置value值爲1
    ELSE
        將map中該單詞的value值加1
新建List對象list,其中存放map
實現Comparator接口對其中數據進行排序
輸出排序後數據

2.2 實驗總結

這題要實現題目規定的排序要使用ArrayList實現Comparator接口來實現排序,還要用到Map.Entry這個內部接口來遍歷元素。3d

3. 倒排索引(題集題目)

本題較難,作不出來沒關係。但必定要有本身的思考過程,要有提交結果。code

3.1 截圖你的代碼運行結果

3.2 僞代碼(不得複製代碼,不然扣分)

建立Map(String,ArrayList<Integer>)對象map存放單詞及其出現行數
建立ArrayList對象line存放每一行句子
WHILE 取得的單詞不爲"!!!!!"
    IF 當前單詞不存在map中
        添加單詞到map中,並將當前行數添加進value
    ELSE 
        判斷這個單詞是否已經在該行出現
            若沒有出現,則添加該行進map的value
使用Iterator迭代器遍歷map並輸出
以空格爲間隔輸入若干個單詞
判斷單詞是否都存在map的同一行中
若存在則輸出行數及對應句子

3.3 實驗總結

實驗總結:首先將建立ArrayList對象line存放每一行句子取得的單詞不爲"!!!!!", 添加單詞到map中而後當前行數添加進value。再判斷這個單詞是否是已經在該行裏出現,若是沒有出現該行進map的value,使用Iterator迭代器遍歷map而後輸出 。
這個題挺難的都不怎麼懂都是找同窗交個人,雖然題是作出來的可是還沒理解清楚。對象

4.Stream與Lambda

編寫一個Student類,屬性爲:
private Long id; private String name; private int age; private Gender gender;//枚舉類型 private boolean joinsACM; //是否參加過ACM比賽
建立一集合對象,如List ,內有若干Student對象用於後面的測試。
測試數據:
blog

List<Student> student = new ArrayList<Student>();
        student.add(new Student(1L,"wang",15,Gender.man,false));
        student.add( new Student(8L,"zhao",16,Gender.woman,true));
        student.add( new Student(87L,"liao",17,Gender.man,false));
        student.add ( new Student(100L,"xu",18,Gender.woman,false));
        student.add( new Student(67L,"liao",19,Gender.man,true));
        student.add( new Student(90L,"liao",20,Gender.man,true));
        student.add( new Student(177L,"liao",21,Gender.man,true));

4.1 使用傳統方法編寫一個搜索方法List search(Long id, String name, int age, Gender gender, boolean joinsACM),而後調用該方法將id>某個值,name爲某個值, age>某個值, gender爲某個值,參加過ACM比賽的學生篩選出來,放入新的集合。在main中調用,而後輸出結果。(截圖:出現學號、姓名)

//search方法定義
    static List<Student> search(List<Student> list,Long id, String name, int age, Gender gender, boolean joinsACM){
        List<Student> student = new ArrayList<Student>();
        for(Student e:list){
            if(e.getId()>id&&e.getName().equals(name)&&e.getGender()==gender&&e.isJoinsACM()==joinsACM){
                student.add(e);
            }
        }
        return student;
        
    }

運行結果:
排序

4.2 使用java8中的stream(), filter(), collect()編寫功能同4.1的代碼,並測試(要出現測試數據)。構建測試集合的時候,除了正常的Student對象,再往集合中添加一些null,你編寫的方法應該能處理這些null而不是拋出異常。(截圖:出現學號)

List<Student> newStudent = student.stream().filter(e -> e!=null&&e.getId()>50&&e.getName().equals("liao")&&e.getAge()>18&&e.getGender()==Gender.man&&e.isJoinsACM()==true).collect(Collectors.toList());

運行結果:
索引

5. 泛型類:GeneralStack

題集jmu-Java-05-集合之GeneralStack

5.1 GeneralStack接口的代碼

interface GeneralStack<T>{
    T push(T item);            
    T pop();                 
    T peek();               
    public boolean empty();
    public int size();     
}

5.2 結合本題與之前做業中的ArrayListIntegerStack相比,說明泛型有什麼好處

使用泛型可使咱們不止實現可以存放Integer類型的棧,還能實現存放Double、String的棧,而不用再去重寫寫接口。

3.碼雲及PTA

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

3.1. 碼雲代碼提交記錄

在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖

3.2 截圖PTA題集完成狀況圖

須要有兩張圖(1. 排名圖。2.PTA提交列表圖)

3.3 統計本週完成的代碼量

須要將每週的代碼統計狀況融合到一張表中。
本身的目標能實現嗎?
還需努力

周次 總代碼量 新增代碼量 總文件數 新增文件數
1 0 0 0 0
2 0 0 0 0
3 125 125 2 2
4 141 141 3 3
5 674 647 13 13
6 647 647 13 13
7 695 48 14 1
8 1867 1867 25 25
9 1974 107 29 4
10 2227 253 34 5

4. 評估本身對Java的理解程度

嘗試從如下幾個維度評估本身對Java的理解程度

維度 程度
語法 PTA的題目還得多學習,
面向對象設計能力 都是問同窗百度學習在努力中
應用能力 可使用Java編寫一些實用的小工
至今爲止代碼行數 2227
相關文章
相關標籤/搜索