Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    [java]array contenente oggetti diversi

    Ciao ho un problema nella risoluzione di un metodo;ho una classe Autore, Articolo(formato dall'attributo Autore a )Autore ed Conferenza(3 classi distinte);in particolare il punto sta nella classe Confrenza:

    codice:
    public class Articolo{
        Autore autore;
    Articolo(Autore i){
    this.autore=i;
    }
    public Autore getAutore(){
        return autore;
    }
    public String toString(){
        return " "+autore;
    }
    }
    
    import java.util.*;
    class Conferenza{
    String titolo;
    Vector<Articolo> articolo;    //vector Contiene Articolo
    
    public Articolo[] articoliDiUnAutore(Autore aut){ //restituisce gli articoli di un singolo autore
    Articolo []v=new Articolo[articolo.size()];
    for(Articolo a:articolo){
        if(a.getAutore()==(aut)){
            v=articolo.toArray(new Articolo[articolo.size()]);
    }
    
    }
    return v;
    }
    public String toString(){
        return " "+" "+articolo;
    }
    public static void main(String[]args){
        Conferenza a=new Conferenza();
        a.aggiungi(new Articolo("lorem5.txt"));
        a.aggiungi(new Articolo("lorem3.txt"));
        
        System.out.println(a.articoliDiUnAutore(new Autore ("Ultimo Infondo pippo@pippo.com  enteAcaso2")));
    
    }
    }
    Come faccio ad individuare nel metodo articoliDiUnAutore(Autore aut) gli articoli di un autore se nell'array ho solo oggetti della classe Articoli?Poi perch'è Il compilatore mi stampa numeri e lettere(credo che sia l'hashcodes) e non la stringa risultante?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    Come faccio ad individuare nel metodo articoliDiUnAutore(Autore aut) gli articoli di un autore se nell'array ho solo oggetti della classe Articoli?
    Ma Articolo contiene l'autore ... quindi è perfettamente possibile farlo. Il punto è come confrontare l'autore. Come hai fatto tu cioè con == non è appropriato perché si basa solo sulla identità degli oggetti (non sul contenuto).
    E comunque sfrutta di più le collezioni, perché tra l'altro il tuo articoliDiUnAutore non ha granché senso.

    Quote Originariamente inviata da el92 Visualizza il messaggio
    Poi perch'è Il compilatore mi stampa numeri e lettere(credo che sia l'hashcodes) e non la stringa risultante?
    In generale, se non ridefinisci il toString(), rimane quello ereditato da Object, che fornisce una stringa poco significativa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    Ciao ho provato ad usare dentro al ciclo for each il metodo equals ma non viene...secondo te nella classe dovrei implementare delle interfacce?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    Ciao ho provato ad usare dentro al ciclo for each il metodo equals ma non viene...secondo te nella classe dovrei implementare delle interfacce?
    In Autore dovresti implementare public boolean equals(Object), visto che ha senso e viene anche utile in articoliDiUnAutore.

    Poi ripeto: usa le collezioni. Ci possono essere più articoli di quel autore richiesto e non sai quanti a priori. Quindi usa di nuovo una lista, se un articolo è di quell'autore, lo inserisci nella lista. Poi visto che alla fine serve un Articolo[], nessun problema, usa toArray.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    Ciao grazie per l'aiuto alla fine viene tutto...ma una cosa... il metodo equals(Object) lo devo per forza implementare,nel mio caso per esempio nella classe Autore?Quindì ogni volta che in una classe uso equals() dovrei implementarlo da qualche parte del codice perchè il metodo funzioni correttamente... giusto?

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da el92 Visualizza il messaggio
    Quindì ogni volta che in una classe uso equals() dovrei implementarlo da qualche parte del codice perchè il metodo funzioni correttamente... giusto?
    Non penso sia proprio così: il metodo ereditato da Object di per sé funziona, ma non fa altro che controllare l'uguaglianza dei reference (quindi se non ridefinito è uguale al confronto che faresti con ==).

    Il senso di ridefinire equals() è il fatto che puoi stabilire tu i criteri che devono soddisfare due istanze di una stessa classe per essere considerate uguali, ad esempio nel caso delle stringhe, come noto, il metodo equals() controlla l'uguaglianza del contenuto delle stringhe.

    Spero di non avere frainteso, in caso ci penserà andbin a correggermi

  7. #7
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    Ciao grazie 1000 x la risposta...mo ho capito

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Ansharja Visualizza il messaggio
    Spero di non avere frainteso, in caso ci penserà andbin a correggermi
    No no, hai detto tutto giusto!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.