今天要分享的比較偏演算法
標題是下"以實體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
那麼這篇到此,雖然不知道有沒有機會幫助到別人
不過如果本文對你有幫助的話...
文章標籤
全站熱搜