Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [java]uso di iterable

Visualizzazione discussione

  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    [java]uso di iterable

    Ciao è da poco che sto imparando ad implementare le intefacce iterator ed iterable.
    In particolare non riesco a risolvere il seguente esercizio:
    Costruisci la classe:
    * abstract Persona1

    La classe astratta Persona1 descrive una persona, caratterizzata
    da nome, cognome.
    Possiede un costruttore che permette di costruire una persona di cui
    vengono specificati dagli argomenti nome e cognome.
    Deve riscrivere i metodi toString e equals della classe Object.
    Deve inoltre implementare l'interfaccia Comparable<Persona1> in modo tale
    che le persone possano essere ordinate in ordine alfabetico (cognome poi nome).

    e vabbeh fin qui (spero) tutto a posto.

    codice:
    import java.util.*;
    abstract class Persona1 implements Comparable<Persona1>{
        String nome;
        String cognome;
    
    Persona1(String nome,String cognome){
        this.nome=nome;
        this.cognome=cognome;
    
    }
    
    public boolean equals(Persona1 p){
        boolean b=false;
        if((this.nome).equals(p.nome)&&(this.cognome).equals(p.cognome)){
            b=true;
        }
        return b;
    }
        
    public int compareTo(Persona1 p){
        int x=0;
        int result = this.cognome.compareTo(p.cognome);
        int result1 = this.nome.compareTo(p.nome);
        x=(result<0)?-1:result ==0?0:1;
     
       return x;
    }
    public String toString(){
        String s="il nome della persona è: "+nome+"\n"
        +"il cognome della persona è: "+cognome;
        return s;
    }
    }
    poi scrivi una classe :
    *Genitore

    Sottoclasse concreta della classe Persona1 che rappresenta una persona che puo' avere figli.Possiede un unico costruttore, che costruisce un genitore di cui vengono specificati
    nome e cognome e non i figli.Oltre ai metodi ereditati dalla classe Persona1 (se occorre vanno riscritti)
    deve possedere i seguenti metodi:
    - public void addFiglio(Persona1 p)
    La persona1 p viene aggiunta ai figli di questo genitore. Si assume p!=null.
    - public void sortFigli()
    Ordina i figli in ordine alfabetico.
    La classe deve implementare l'interfaccia Iterable<Persona1>;
    il metodo iterator deve restituire un iteratore per i figli.

    ecco e qui il casino:

    codice:
    import java.lang.*;
    import java.util.*;
    class Genitore extends Persona1 implements Iterable<Persona1> {
    ArrayList<Persona1> figli;
        Genitore(String nome,String cognome){
            super(nome,cognome);
            figli=new ArrayList<Persona1>();
        }
        public void addFiglio(Persona1 p){
            if(p!=null){
                figli.add(p);
            }
         }
         public void sortFigli(){
             Collections.sort(figli);
         }
    public Iterator<Persona1> iterator(){
        return figli.iterator();
    
    }
    @Override
    public String toString(){
        String t="";
        for(int pos=0;pos<figli.size();pos++){
        String t="il nome dei figli della persona sono: "+figli.get(pos);
    }
        return t;
    }
    public static void main(String[] args){
    ArrayList<Persona1> i=new ArrayList<Persona1>();
    Genitore p=new Genitore("elena","rossi");
    Genitore p1=new Genitore("alessio","rossini");
    Genitore g;
    Persona1 g1;
    g=p;
    g1=p1;
    i.add(g);
    i.add(g1);
    Collections.sort(i);
    for(Persona1 l:i){
    System.out.println(l.toString());
    }
    
    p.addFiglio(g);
    p.sortFigli();
    System.out.println(p.toString());
    }
    }

    Il compilatore mi dà un errore sulla classe Genitore di tipo:
    at java.lang.StringBuilder.append(StringBuilder.java: 115)
    at Genitore.toString(Genitore.java:46)
    at java.lang.String.valueOf(String.java:2826)
    Dopo tutta questa spataffiata di roba mio problema è:come posso dire che la persona p viene aggiunta ai figli di questo genitore?Secondo voi i metodi che ho scritto sopra sono almento concettualmente corretti?Poi l'interfaccia iterable, la posso utilizzare all'interno di una classe senza aver implementato l'interfaccia iterator?
    scusate per il messaggio troppo lungo
    Ultima modifica di el92; 13-04-2015 a 18:16

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.