自定義Map集合,將重複的鍵值對不進行覆蓋而是進行疊加
在我java基礎中寫過的一個串聯性的小遊戲中,自定義一個賬戶類,主要需要用到的是身份證號,這個是唯一標識,隨機生成的卡號,密碼,賬戶餘額,將所有的物件儲存在ArrayList中,現在需要統計所有賬戶的餘額,並且將這些餘額排序,需求的重點是這些一個人會有多個賬戶,這些賬戶的唯一的相同點是開戶人的身份證號,然後將所有身份證號相同的賬戶的餘額加起來,並進行排序
自定義一個Map集合,並繼承HashMap,在這個類中重寫空構造方法,加入一個比較器模型
//重寫空構造方法,加入比較器模型
public MyMap(Comparator<Account> comparator) {
}
//自定義put方法,
public Double put(K Key,Double value) {
//將傳入的value方法賦值給一個變數
Double newV = value;
//如果這個map中有key這個鍵值對
if(containsKey(Key)) {
//通過get方法取出原始的value值
Double oldV=get(Key);
//將原始的value值和傳入的value相加賦值給新的value
newV = oldV + newV;
}
//呼叫hashMap的put方法,返回鍵值對為key和新value的元素
return super.put(Key, newV);
}
賬戶已經存在了ArrayList型別的list物件中,將這些物件轉存到自定義的map中
//給所有賬戶餘額排序
public HashMap sortMoney() {
//根據身份證號查詢所有的賬戶
MyMap<String> map = new MyMap<String>(new Comparator<Account>() {
//實現Comparator的比較方法,方法體根據你要進行的比較規則自定義
@Override
public int compare(Account o1, Account o2) {
//首先將餘額進行比較,餘額一樣,呼叫String的compareTo方法對PersonId進行比較
int flag = (int) (o1.getBalance() - o2.getBalance());
return flag == 0?o1.getPersonId().compareTo(o2.getPersonId()):flag;
}
});
//呼叫自定義map的自定義put方法,將list中相同PersonId的所有賬戶中的餘額加起來,放到map中的一個鍵值對中
for(int i=0;i<list.size();i++) {
map.put(list.get(i).getPersonId(), list.get(i).getBalance());
}
//返回自定義的map
return map;
}
測試類:
System.out.println("所有賬戶餘額是(按財產降序):");
//定義一個map集合接收排序方法傳來的集合物件
HashMap<String,Double> map = bank.sortMoney();
//通過foreach迴圈遍歷map
for(String col:map.keySet()) {
//通過key值找出對應的value值
Double add = map.get(col);
//列印輸出鍵值對
System.out.println("賬戶所有人的身份證號是:"+col+",名下的財產是:"+add);
}
相關文章
- 進階篇_map容器(儲存鍵值對)
- 重疊IO操作在進行中
- iOS中對NSArray中自定義的物件進行排序iOS物件排序
- C# 對選單進行自定義樣式C#
- 利用kvo對集合進行操作
- Java -- 對List集合進行分頁Java
- js對陣列中相同物件元素進行去重,裡面物件相同id,其他不同屬性進行文字疊加JS陣列物件
- 對 echo 框架進行統一的自定義錯誤處理框架
- map自定義排序,根據鍵或者值排隊排序
- 避免對派生的非虛擬函式進行重定義函式
- PHP使用使用者自定義的比較函式對陣列中的值進行排序PHP函式陣列排序
- python 對字典的值進行排序Python排序
- GO語言————8.6 將 map 的鍵值對調Go
- JavaScript 根據物件鍵值進行排序JavaScript物件排序
- java stream()流對兩個集合進行比對Java
- 避免對派生的非虛擬函式進行重定義薦函式
- 對list集合中的物件進行排序(轉載)物件排序
- 在Watir中進行物件對映(Object Map)的方法物件Object
- [Python] Pandas 對資料進行查詢、替換、篩選、排序、重複值和缺失值處理Python排序
- 10g線上重定義新特性——對單獨的分割槽進行線上重定義
- 最小路徑可重複點覆蓋
- 地圖自定義錨點+覆蓋物地圖
- 在Java中對集合當中的物件進行排序Java物件排序
- C# 針對特定的條件進行鎖操作,不用lock,而是mutexC#Mutex
- 二維陣列根據鍵的值進行排序陣列排序
- React元件中對子元件children進行加強React元件
- Go 如何對陣列切片進行去重Go陣列
- 如何在Spark鍵值對資料中,對指定的Key進行輸出/篩選/模式匹配Spark模式
- Python對HTML轉義字元進行反轉義PythonHTML字元
- 解決spring security自定義filter重複執行問題SpringFilter
- 在JavaScript中對HTML進行反轉義JavaScriptHTML
- jquery獲得option的值和對option進行操作jQuery
- Web端進行PHP程式碼函式覆蓋率測試的解決方案WebPHP函式
- Map按照key和value進行排序排序
- 4.QOpenGLWidget-對三角形進行紋理貼圖、紋理疊加
- 想在 KubeSphere 中進行自定義監控?來瞧瞧這
- MCollective結合自定義facter對puppet節點進行分類觸發操作
- 關於TAOCP中用集合論對演算法進行嚴格數學定義的理解演算法