java第八週學習總結

1. 本週學習總結

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

2. 書面做業

2.List中指定元素的刪除(題目4-1)

2.1 實驗總結

Iterator<String> it=list.iterator();
        while(it.hasNext()){
        String x=it.next();
            if(x.equals(str)){
                it.remove();

在進行刪除操做時,若是直接用list遍歷,會出現答案錯誤的狀況,因此須要迭代器進行操做,由於迭代器刪除是,是不會改變迭代的下標的。
java

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

3.1 僞代碼(簡單寫出大致步驟)

首先將輸入的單詞取出來放入map中,而且統計他們的出現次數;接着使用Comparator接口自定義一個排序方法,而後按照題目的要求輸出總詞數以及排名前十的詞就能夠了。ide

3.2 實驗總結

將單詞放入map中,須要分類處理,若是map中已經有了,那麼只要value加一就能夠了,若是沒有,那就map.put(key,1);接着就是Comparator接口進行排序,先是比較次數o2.getValue()-o1.getValue(),若是相等,那就比較key,o1.getKey().compareTo(o2.getKey())函數

3.3 提交截圖

4.倒排索引(題目5-4)

4.1 截圖你的提交結果(出現學號)

4.2 僞代碼(簡單寫出大致步驟)

1.創建TreeMap,Map<String,ArrayList<Integer>> word=new TreeMap<String,ArrayList<Integer>>(); 2.接着建立一個ArrayList,將輸入的句子存放進去。 3.而後輸出每一個單詞出現的段數。 4.判斷輸入的單詞屬於哪一行,輸出段數而且將這短話也打印出來。學習

4.3 實驗總結

本題主要使用了TreeMap,把輸入的語段放入ArrayList中,查找出全部單詞對應的段落。在統計單詞的時候,要一段一段的讀取,並自定義用空格對單詞區分,由於後面須要對單詞所在行數查詢。測試

5.Stream與Lambda

編寫一個Student類,屬性爲:this

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

5.1 使用傳統方法編寫一個方法,將id>10,name爲zhang, age>20, gender爲女,參加過ACM比賽的學生篩選出來,放入新的集合。在main中調用,而後輸出結果。

package jihe;

import java.util.ArrayList;
import java.util.Set;
enum Gender {  
      female, male
    } 
class Student
{
    private Long id;
    private String name;
    private int age;
    private Gender gender;//枚舉類型
    private boolean joinsACM; //是否參加過ACM比賽

    
    public Student(Long id, String name, int age, Gender gender, boolean joinsACM) {

        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.joinsACM = joinsACM;
    }

    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", age=" + age + ", gender=" + gender + ", joinsACM=" + joinsACM
                + "]";
    }

    public Student find()
    {
        if(this.id>10L&&this.name.equals("zhang")&&this.age>20&&this.gender==Gender.female&&this.joinsACM)
        {
            Student str=new Student(this.id,this.name,this.age,this.gender,this.joinsACM);
            return str;
        }
        
        else
            return null;
        
    }
}
public class test {

    public static void main(String[] args) {
        ArrayList<Student> list=new ArrayList<Student>();
        Student x=new Student(20L,"zhang",21,Gender.female,true);
        Student y=new Student(11L,"li",20,Gender.male,false);
        Student z=new Student(9L,"zhang",21,Gender.female,true);
        Student d=new Student(12L,"zhang",22,Gender.female,true);
        list.add(x);
        list.add(y);
        list.add(z);
        list.add(d);
        for (Student student : list) {
            System.out.println(student.find());
        }
    }

}

5.2 使用java8中的stream(), filter(), collect()編寫功能同4.1的函數,並測試。

5.3 構建測試集合的時候,除了正常的Student對象,再往集合中添加一些null,而後從新改寫4.2,使其不出現異常。

須要增長 student != null,對student是否非空進行判斷對象

6.泛型類:GeneralStack(題目5-5)

6.1 截圖你的提交結果(出現學號)

6.2 GeneralStack接口的代碼

6.3 結合本題,說明泛型有什麼好處

好處:例如在pta題目5-1所定義IntegerStack接口,只能用於存放Integer類型的數據,很不方便。可是若是使用泛型,在定義類時,沒必要直接就決定類的類型,在main中調用時,能夠建立多個不一樣類型的類,方便。blog

7.泛型方法

基礎參考文件GenericMain,在此文件上進行修改。排序

7.1 編寫方法max,該方法能夠返回List中全部元素的最大值。List中的元素必須實現Comparable接口。編寫的max方法需使得String max = max(strList)能夠運行成功,其中strList爲List 類型。也能使得Integer maxInt = max(intList);運行成功,其中intList爲List 類型。

  1. 碼雲上代碼提交記錄及PTA實驗總結

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

3.1. 碼雲代碼提交記錄

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

相關文章
相關標籤/搜索