Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1

    Problemi con il metodo Arrays.sort()

    ciao a tutti...
    vi spiego qual è il mio problema...
    ho una classe Episode che descrive gli episodi composti da:
    - titolo episodio
    - serial
    - stagione serial
    - numero episodio
    - anno
    - genere

    la classe Episode implementa l'interfaccia Comparable e quindi ho implementato il metodo compareTo in cui confronta due episodi e ritorna 0 nel caso in cui serial, stagione, numero episodio e titolo sono uguali...

    il problema è ke non riesco ad ordinare gli episodi con il metodo sort nell'odine serial, stagione e titolo episodio...

    qualcuno potrebbe aiutarmi a risolvere questo problema???

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Problemi con il metodo Arrays.sort()

    Originariamente inviato da pieroJdk
    il problema è ke non riesco ad ordinare gli episodi con il metodo sort nell'odine serial, stagione e titolo episodio...
    È semplicemente un ordinamento in cui hai N proprietà ognuna con un proprio "peso" (concettualmente come nel sistema decimale o binario). Ovvero serial è quella più significativa, poi stagione, poi titolo episodio è quella meno significativa.

    Tradotto a livello tecnico, nel compareTo() prima confronti i due "serial". Se il risultato indica che uno è < o > dell'altro, allora sai già che un Episode è minore o maggiore dell'altro e ritorni il risultato. Se i due serial sono uguali allora vai a confrontare i due "stagione", idem se il risultato indica < o > sai già il risultato, altrimenti se sono uguali vai a confrontare i due "titolo episodio".

    Sono semplicemente dei test in "cascata"!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    quindi nel metodo compareTo l'if in cui controllo i campi non dovrà essere if(serial1.equals(serial2) && (stagione1 == stagione2) && (titolo1.equals(titolo2)) ma dovrà essere un if concatenato all'altro giusto?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da pieroJdk
    quindi nel metodo compareTo l'if in cui controllo i campi non dovrà essere if(serial1.equals(serial2) && (stagione1 == stagione2) && (titolo1.equals(titolo2)) ma dovrà essere un if concatenato all'altro giusto?
    No, scordati gli equals()! Se le proprietà sono String (o comunque un tipo che è Comparable), userai compareTo() per confrontarle. Se sono valori primitivi bastano dei test con gli operatori relazionali (< e >).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ok grazie mille...ora funziona...
    se avrò altri problemi o avete bisogno spero di potervi aiutare...

    grazie AndBin..

  6. #6
    ho ancora un problema...
    dato che nel compareTo il confronto lo faccio anke sul numero dell'episodio..questo non mi serve per il sort in quanto l'ordinamento non dipende dal numero dell'episodio ma devo fare SOLO sul serial, stagione e titolo...HELP!!!

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da pieroJdk
    il confronto lo faccio anke sul numero dell'episodio.. [...] in quanto l'ordinamento non dipende dal numero dell'episodio
    Beh, ma scusa .... ti sei già risposto da solo! Se dici che l'ordinamento non dipende del numero episodio .... perché lo devi confrontare??? Stai dicendo una cosa controsenso ... allora lascialo perdere! ..... nel compareTo() usa solo serial, stagione e titolo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    così sarebbe semplice...
    sono le richieste del professore...
    nel compareTo() il confronto va fatto anke sul numero dell'episodio..mentre l'ordinamento no..
    come posso fare?

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da pieroJdk
    sono le richieste del professore...
    nel compareTo() il confronto va fatto anke sul numero dell'episodio..mentre l'ordinamento no..
    come posso fare?
    Ripeto che stai dicendo una cosa parecchio controsenso .... e se questo te lo ha detto un "professore" ...... come si dice, stendiamo il solito velo pietoso ....

    L'ordinamento è imposto dal compareTo() ... e se ammetti che l'ordinamento non deve trattare il numero episodio ma poi dici che lo devi confrontare ... ti stai dando la zappa sui piedi (sarebbe meglio dare la zappa sui piedi al ..... )

    A rigor di logica, se ci pensi un attimo, se le proprietà da comparare sono serial/stagione/titolo episodio, non avrebbe molto senso comparare anche il numero episodio! Faccio un esempio pratico:

    codice:
    Serial           Stag   Titolo ep.             Num. ep.
    -------------------------------------------------------
    Criminal Minds    4     Ai confini del caos       1
    Criminal Minds    4     Il creatore di angeli     2
    Criminal Minds    4     Fede cieca                3
    Criminal Minds    4     Motel Paradise            4
    Il titolo episodio è già quello che differenzia in modo chiaro e univoco gli Episode (a parità di serial/stagione), non avrebbe senso avere 2 Episode che sono esattamente uguali per le prime 3 proprietà (es. Criminal Minds/4/Ai confini del caos) e hanno numero episodio differente!!!


    OFFTOPIC: La 4a stagione inizia proprio stasera
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    quindi secondo il tuo parere sarebbe meglio evitare il confronto tra i numeri dell'episodio poichè se hanno stesso titolo e appartengono alla stessa serie e stagione sono x forza uguali...
    giusto?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.