Mi è stato assegnato un incarico di modifica per aggiornare uno esistente.Conversione di una lista concatenata su una mappa
capire come ricodificare il problema prova di idoneità usando una mappa per ogni linea del terminale, sulla presupposto che la dimensione del problema è dominato dal numero di linee di ingresso, non i 500 linee terminali
Il programma contiene un file di testo che ha il numero, il nome. Il numero è il numero di PC e il nome è l'utente che ha effettuato l'accesso. Il programma restituisce l'utente per ciascun pc che ha effettuato l'accesso più spesso. Ecco il codice esistente
public class LineUsageData {
SinglyLinkedList<Usage> singly = new SinglyLinkedList<Usage>();
//function to add a user to the linked list or to increment count by 1
public void addObservation(Usage usage){
for(int i = 0; i < singly.size(); ++i){
if(usage.getName().equals(singly.get(i).getName())){
singly.get(i).incrementCount(1);
return;
}
}
singly.add(usage);
}
//returns the user with the most connections to the PC
public String getMaxUsage(){
int tempHigh = 0;
int high = 0;
String userAndCount = "";
for(int i = 0; i < singly.size(); ++i){//goes through list and keeps highest
tempHigh = singly.get(i).getCount();
if(tempHigh > high){
high = tempHigh;
userAndCount = singly.get(i).getName() + " " + singly.get(i).getCount();
}
}
return userAndCount;
}
}
Ho problemi sul lato teorico. Possiamo usare una hashmap o una treemap. Sto cercando di pensare a come formerei una mappa che terrebbe la lista degli utenti per ciascun pc? Posso riutilizzare l'oggetto Usage che conterrà il nome e il conteggio dell'utente. Non dovrei modificare quell'oggetto però