KLT*_*LTR 5 java sorting treemap
我有一个由分类树图compareTo的Account类.
当我启动树形图时,它会被排序,但是当我尝试使用此功能(为特定帐户添加资金)时,仅当我更改的值不是树形图中的第一个或最后一个时,它才有效.
这是代码.我究竟做错了什么?
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您必须遍历整个 Map 才能找到具有特定编号的帐户,那么您就达不到使用 Map 的目的。
也许你应该有两张地图。附加地图将是一个HashMap<Integer,Account>,让您Account在固定时间内通过帐号找到一个。
这将允许您摆脱循环(因为一旦您有了给Account定帐号的 ,单个map.get(account)将为您提供相应的值。这将允许您从现有的 中删除或添加条目TreeMap,您可以'迭代条目集时不要执行此操作(好吧,您可以使用条目集上的显式迭代器进行删除,但不能进行插入)。
顺便说一句,除非您TreeMap使用compareTo帐户余额来确定顺序,否则您不必从 TreeMap 中删除条目并使用更新后的余额重新添加它。