[英]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.