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;
}
}
}
まず、reply.iのおかげでアカウントの残高を使って注文を決めるので、削除して再度追加する必要があると思っていました。この新しいマップをどのように実装する必要がありますか?関数の中に? – KLTR
@RoyLevyはい、削除してもう一度追加する必要があります。新しいMapについては、メソッドを呼び出すたびに作成すると効率的ではありません。メソッドの2番目の引数として渡すことを検討する必要があります。 – Eran
しかし、新しいハッシュマップを使用して値を追加するにはどうすればよいですか?私はo(1)でアカウントを取得することができますが、ハッシュマップから値を追加する方法(キーはintegeなので)申し訳ありませんが、私はいくつかの愚かな質問を学生かもしれません:) – KLTR