[Java] mappa con parametro

Gol_D_Roger
Salve, potreste aiutarmi con questo esercizio:

Nella classe Utility, scrivere il codice del metodo

Map> utente2docs(List docs, String nomePermesso)

Il metodo prende come parametri una collezione di documenti e il nome di un permesso e restituisce una mappa che ha per chiave un utente e per valore la lista dei documenti (tra quelli della collezione passata come parametro) per i quali l’utente corrispondente alla chiave ha il permesso specificato come secondo parametro.

Praticamente mi viene data una classe Utility in cui bisogna scrivere questo metodo e inoltre ho una classe Utente e una classe Documento.Nella classe Utility che mi viene data c'è solo questo metodo.

Io ho provato a fare cosi:

static public Map> utente2docs(List docs, String nomePermesso) {
Map> mappa = new HashMap>();
List list = new ArrayList();
for(Documento d : docs){

}


return mappa;
}

Ma poi mi blocco. Potreste gentilmente aiutarmi? Grazie mille in anticipo!

Risposte
apatriarca
Non è chiaro il legame tra nomePermesso e l'utente.. Ma in ogni caso il codice è in pratica identico a quello dell'altra volta sui robot. Crei la mappa e poi fai un ciclo sui documenti. Per ogni documenti ottieni gli utenti (o il singolo utente se ce n'è solo uno) e inserisci quel documento nelle corrispondenti liste della mappa (creando la lista se è il primo documento dell'utente).

Gol_D_Roger
Scusami ancora,

Facendomi aiutare sono riuscito a fare questo:

static public Map> utente2docs(List docs, String nomePermesso) {
if(docs == null || nomePermesso == null){
return null;
}

Map> mappa = new HashMap<>();
for(Documento doc : docs){
PermessoAccesso permessiUtente = doc.getPermessoAccesso(nomePermesso);
if(permessiUtente != null){
for(Utente utente : permessiUtente.getUtenti()){
if(mappa.containsKey(utente)){
mappa.get(utente).add(doc);
}else{
List listDocumenti = new ArrayList<>();
listDocumenti.add(doc);
mappa.put(utente,listDocumenti);
}
}
}
}
return mappa;
}

Mi rendo conto che non è chiaro al massimo perchè non hai il codice intero, ma è questo che dicevi?

Grazie mille in anticipo!

apatriarca
Sì, era esattamente quello.

Gol_D_Roger
Grazie mille!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.