Mantenere l'idea dell'algoritmo di priorità dell'ordine

2

Sto ricevendo una lista enorme e ha due campi come segue:

Number   Designation
10       Principal
10       Teacher
10       Dean
10       Peon

Mappa mappa = nuova HashMap < > ();

Sto usando Map per evitare i duplicati.

{Dean, principal, teacher, peon} sono in ordine decrescente e i valori possono essere sovrascritti. Inizialmente, il principal viene inserito nella mappa, quindi non dovrebbe consentire all'istruttore di eseguire l'override a causa della priorità più alta con il principal, in seguito il principal sarebbe sovrascritto da dean, ma peon non può sovrascrivere il dean.

Come posso ottenere questo? Quale algoritmo si applica qui? qualche idea?

L'output sarà:

10 Dean
    
posta Zafrullah Syed 06.03.2017 - 22:52
fonte

2 risposte

1

Assegna un rango intero a ciascun valore. Se il rango di un valore esistente nella mappa per la chiave è inferiore al valore candidato, sostituirlo. Se non lo è: no.

    
risposta data 06.03.2017 - 22:57
fonte
0

Scrivi un metodo che accetta l'input (Numero, Designazione) e quindi valuta la priorità della designazione se c'è già una chiave con il "Numero" in HashMap. Se il valore esistente ha priorità più alta non aggiungere il nuovo valore, aggiungere il nuovo valore per la chiave. Di seguito è riportato il codice di esempio che potrebbe aiutarti

private Map map = new HashMap<Number,String> (); 
//Enum values defining the Designations available
private Enum Desginations{DEAN, PRINCIPAL, TEACHER, PEON}
// Input method which accept the number and designation
public void addValueToMap(int number, String desgination){
   if(map.containsKey(number)){
        if (compareDesignation(desgination, map.get(number)) >0 )
             map.put(number, designation);
      }
// if you want to add other keys
    else 
        map.put(number, designation);
 }
 //Method to compare the priority of designation for the existing and new value for the same key
 private int compareDesignation(String inputDesignation, String existingDesgination){
//negative of result because the order of Designations in Enum is defined where the lowest value has the max priority 
  return -(Desginations.inputDesignation.getValue() - Desginations.existingDesgination.getValue())

}

//Method to print the existing map key and values
public void printDesignationsMap(HashMap designationsMap){
for (Map.Entry<KeyType, ValueType> entry : designationsMap.entrySet())
   System.out.println(entry.getKey()+" : "+entry.getValue());
 }
    
risposta data 07.03.2017 - 01:11
fonte

Leggi altre domande sui tag