[英]how to keep a treemap sorted after adding key-values
我有一個樹圖,它按Account
類中的compareTo
排序。
當我啟動樹形圖時,它會被排序,但是當我嘗試使用此功能(為特定帳戶添加資金)時,僅當我更改的值不是樹形圖中的第一個或最后一個時,它才有效。
這是代碼。 我究竟做錯了什么?
public static void deposit(TreeMap<Account,MyLinkedList<Customer>> map){
boolean flag = false;
int num ;
int amount;
System.out.println("please enter account number");
num = s.nextInt();
//for(Iterator<Account> i = map.;i.hasNext())
for(Map.Entry<Account, MyLinkedList <Customer>> entry : map.entrySet()){
if(entry.getKey().getAccNumber() == num){
flag = true;
System.out.println("Please enter amount");
amount = s.nextInt();
entry.getKey().setAccBalance(entry.getKey().getAccBalance()+amount);
Account temp = entry.getKey();
MyLinkedList<Customer> tempList = entry.getValue();
map.remove(entry.getKey());
map.put(temp, tempList);
break;
}
}
if(flag == false) {
System.out.println("Account doesn't exist");
return;
}
}
}
如果您必須遍歷整個Map以查找具有特定編號的帳戶,那么您將無法使用Map。
也許你應該有兩張地圖。 附加地圖將是HashMap<Integer,Account>
,並允許您按固定時間按帳號查找Account
。
這將讓你擺脫循環的(因為一旦你的Account
的指定帳戶數量,單個map.get(account)
,會得到相應的價值。這將允許您刪除和/添加條目現有的TreeMap
,在迭代條目集時你不能做(好吧,你可以在條目集上使用顯式迭代器進行刪除,但不能插入)。
順便說一句,除非您的TreeMap
的compareTo
使用帳戶余額來確定排序,否則您不必從TreeMap中刪除該條目並使用更新的余額重新添加它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.