Visualizzazione dei risultati da 1 a 5 su 5

Discussione: MAPPE

  1. #1

    MAPPE

    Salve a tutti!
    Ho un problema con l'uso delle Mappe. Avendo una Map<Laboratorio, List<Afferente>> e sapendo che tra gli Afferenti sono presenti dei Tesisti (dove Tesista � una sottoclasse di Afferente), devo scrivere un metodo che restituisca il laboratorio con il maggior numero di tesisti. Qualcuno pu� darmi una dritta? Grazie per l'attenzione.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da VinSmoke Visualizza il messaggio
    Ho un problema con l'uso delle Mappe. Avendo una Map<Laboratorio, List<Afferente>> e sapendo che tra gli Afferenti sono presenti dei Tesisti (dove Tesista � una sottoclasse di Afferente), devo scrivere un metodo che restituisca il laboratorio con il maggior numero di tesisti. Qualcuno pu� darmi una dritta?
    Devi poter usare Stream/lambda (Java 8) oppure no? Chiaramente dovrai controllare il tipo degli oggetti, c'è solo una questione fine: vuoi testare che la classe dell'oggetto sia esattamente Tesista oppure che l'oggetto è-un Tesista (che considera pure l'ereditarietà)?

    Ah, e se più laboratori hanno lo stesso massimo numero di tesisti?? Ti serve il primo/ultimo trovato o tutti?
    Ultima modifica di andbin; 21-08-2017 a 18:31
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    La lista di Afferenti contiene oggetti di classi diverse quali: Assegnista, Tesista, Dottorando. Tutte sono sottoclassi di Afferente. Per quanto riguarda le espressioni lambda, non credo di doverle usare. Non riesco a produrre un metodo per trovare quale tra le diverse liste associate ai rispettivi Laboratori della mappa contiene pi� Tesisti.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da VinSmoke Visualizza il messaggio
    La lista di Afferenti contiene oggetti di classi diverse quali: Assegnista, Tesista, Dottorando. Tutte sono sottoclassi di Afferente. Per quanto riguarda le espressioni lambda, non credo di doverle usare. Non riesco a produrre un metodo per trovare quale tra le diverse liste associate ai rispettivi Laboratori della mappa contiene pi� Tesisti.
    Intanto, per cominciare, fai pure innanzitutto un metodo es. contaTesisti che dato un List<Afferente> in argomento restituisce quanti oggetti Tesista ci sono.

    Poi in un altro metodo, scorri la mappa (per entry oppure per chiavi e poi per ciascuna prendi il valore .. a tua scelta). Se ti basta trovare l'ultimo Laboratorio che ha il maggior numero di tesisti, ti bastano 2 variabili: il Laboratorio massimo "corrente" e il conteggio massimo "corrente".
    Per ciascuna lista, usi il metodo contaTesisti e se il conteggio è maggiore del conteggio massimo corrente, aggiorni le due variabili. Alla fine hai l'ultimo Laboratorio con il conteggio massimo.

    Se ti serve il primo o eventualmente tutti quelli con il massimo, la logica ovviamente cambia un pochino.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Intanto, per cominciare, fai pure innanzitutto un metodo es. contaTesisti che dato un List<Afferente> in argomento restituisce quanti oggetti Tesista ci sono.

    Poi in un altro metodo, scorri la mappa (per entry oppure per chiavi e poi per ciascuna prendi il valore .. a tua scelta). Se ti basta trovare l'ultimo Laboratorio che ha il maggior numero di tesisti, ti bastano 2 variabili: il Laboratorio massimo "corrente" e il conteggio massimo "corrente".
    Per ciascuna lista, usi il metodo contaTesisti e se il conteggio è maggiore del conteggio massimo corrente, aggiorni le due variabili. Alla fine hai l'ultimo Laboratorio con il conteggio massimo.

    Se ti serve il primo o eventualmente tutti quelli con il massimo, la logica ovviamente cambia un pochino.
    Perfetto! Grazie mille per l'aiuto, ora ho capito.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.