今天要分享的比較偏演算法

標題是下"以實體ArrayList特定內容更新重複元素"

其實某種意義上來說更相似於"資料更新"

今天的要求如下

1. 搜集使用者資料,需要填入"姓名"、"年齡"、"補充"三個欄位

2. 如果姓名已經有存在,則自動更新其他兩個欄位的內容

那麼,來看看吧

 

大家可以點看看玩一下哦XD

那麼,這是怎麼實踐的呢?

首先,在全域中(第4行)宣告一個ArrayList

private static ArrayList list = new ArrayList();

 

然後跟使用者索取資料,並加入到陣列中(10~17行)

/**取得輸入資料*/
Scanner scanner = new Scanner(System.in);
System.out.println("姓名: ");
String name = scanner.next();
System.out.println("age: ");
String age = scanner.next();
System.out.println("none: ");
String none = scanner.next();
list.add(new TrySet(name, Integer.parseInt(age), none));

 

再來是撰寫更新演算(第20行及37~58行)

ArrayList<TrySet> newList = getSingle(list);
private static ArrayList getSingle(ArrayList list) {
    ArrayList tempList = new ArrayList<>();
    for (Object obj : list) {
        if (!tempList.contains(obj)) {
            tempList.add(obj);//增加
        } else {
            tempList.set(getIndex(tempList, obj), obj);//更新
        }
    }
    return tempList;

}

 

這邊還要注意粉底白字部分,如果只是設定一般Contains(包含)的話沒辦法達到效果

所以我們在TrySet這個實體類內自定義判斷方法

請見87~92行override的部分

這邊就是要我的程式依據name的欄位來判斷輸入是否重複

最後在37~47行將重複資料更新or非重複資料做陣列新增

然後在21~27行輸出資料,搞定!(;´д`)ゞ

 


 

請原諒我這篇打得非常地簡陋

但是簡陋歸簡陋,這個也是有被我實際套用到專案的,我也不是在亂寫(┼д┼;)

這週太忙了,為了週更我只好想些短文混過去XD

那麼這篇到此,雖然不知道有沒有機會幫助到別人

不過如果本文對你有幫助的話...

TK

arrow
arrow

    碼農日常 發表在 痞客邦 留言(27) 人氣()