Ho una treemap che è ordinata da un compareTo
nella classe Account
.come mantenere una treemap ordinata dopo aver aggiunto i valori-chiave
Quando avvio la mappa dei tre, questa viene ordinata ma quando cerco di utilizzare questa funzione (per aggiungere denaro a un account specifico), funziona solo se i valori che cambio non sono il primo o l'ultimo nella treemap.
Ecco il codice. Che cosa sto facendo di sbagliato?
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;
}
}
}
prima di tutto, grazie per la risposta. Sto utilizzando il saldo del conto per determinare l'ordine, quindi ho pensato di dover rimuovere e aggiungere di nuovo. E come dovrei implementare questa nuova mappa? all'interno della funzione? – KLTR
@RoyLevy Sì, è necessario rimuovere e aggiungere nuovamente. Per quanto riguarda la nuova mappa, non sarebbe efficiente se la si crea ogni volta che viene chiamato il metodo. Dovresti considerare di passarlo come secondo argomento al tuo metodo. – Eran
ma come faccio ad usare la nuova hashmap per aggiungere i valori? Capisco che posso ottenere da o (1) con ottenere account, ma come aggiungo il valore da hashmap (dal momento che la chiave è un intege) scusa im uno studente, forse mi chiedo alcune domande stupide :) – KLTR