自定義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);
}
相關文章
- python 對字典的值進行排序Python排序
- Java -- 對List集合進行分頁Java
- js對陣列中相同物件元素進行去重,裡面物件相同id,其他不同屬性進行文字疊加JS陣列物件
- map自定義排序,根據鍵或者值排隊排序
- 避免對派生的非虛擬函式進行重定義函式
- GO語言————8.6 將 map 的鍵值對調Go
- [Python] Pandas 對資料進行查詢、替換、篩選、排序、重複值和缺失值處理Python排序
- 利用Lighthouse進行覆蓋率統計及其最佳化
- java stream()流對兩個集合進行比對Java
- JavaScript 根據物件鍵值進行排序JavaScript物件排序
- 自定義註解進行資料脫敏
- system.text.Json 針對繼承多型型別的集合,使用自定義Converter,進行json序列化JSON繼承多型型別
- C# 針對特定的條件進行鎖操作,不用lock,而是mutexC#Mutex
- 解決spring security自定義filter重複執行問題SpringFilter
- 最小路徑可重複點覆蓋
- 二維陣列根據鍵的值進行排序陣列排序
- React元件中對子元件children進行加強React元件
- 聊聊自定義實現的SPI如何與spring進行整合Spring
- 4.QOpenGLWidget-對三角形進行紋理貼圖、紋理疊加
- 如何在Spark鍵值對資料中,對指定的Key進行輸出/篩選/模式匹配Spark模式
- Go 如何對陣列切片進行去重Go陣列
- jquery獲得option的值和對option進行操作jQuery
- 想在 KubeSphere 中進行自定義監控?來瞧瞧這
- Web端進行PHP程式碼函式覆蓋率測試的解決方案WebPHP函式
- 使用SpringBoot JPA進行自定義的儲存及批量儲存Spring Boot
- python對excel檔案中指定表格的指定列資料進行去重複操作。PythonExcel
- 使用matlab對影像進行二值化處理Matlab
- Python對HTML跳脫字元進行反轉義PythonHTML字元
- 使用Spring Reactive MongoDB進行自定義更新查詢 -Yuri MednikovSpringReactMongoDB
- 大文字如何按行去除重複值
- 將zookeeper curator與springboot專案進行整合(重點)Spring Boot
- 使用SpringBoot-JPA進行自定義的儲存及批量儲存Spring Boot
- 如何用python模擬點選進行重複話語?Python
- 對字典進行排序排序
- 利用Xcode進行重簽名XCode
- 大學生對進入IT行業的熱度依然不減?行業
- C#泛型鍵值對集合C#泛型
- 未被定義的 “智慧座艙”,如何將產業化進行到底產業