ToString per un arrayList di oggetti

di il
2 risposte

ToString per un arrayList di oggetti

Salve a tutti, sto cercando di creare un metodo che mi prenda in input un valore X da confrontare con il prezzo degli oggetti appartenenti all'arrayList<Prodotto> e poi successivamente stampare a schermo quelli con prezzo maggiore di X.

Non riesco a fare stampare i nomi ma solo i loro indirizzi in memoria (ex. @3455474) condivido gli script

package Es_4;

public class Test {

    public static void main(String[] args) {
        Libreria l = new Libreria("libreria1");

        Libro a1 = new Libro(13, "ciao", Lingua.italiano);
        Libro a2 = new Libro(4, "ciao", Lingua.italiano);
        Libro a3 = new Libro(6, "ciao", Lingua.italiano);

        l.aggiungiProdotto(a1);
        l.aggiungiProdotto(a2);
        l.aggiungiProdotto(a3);

        System.out.println(l);

        System.out.println(l.getOggettiConPrezzoMaggioreDi(3));

    }

}
package Es_4;

import java.util.ArrayList;

public class Libreria {

    private String nomeLibreria;

    private ArrayList<Prodotto> listaProdotti = new ArrayList<>();

    ArrayList<Prodotto> prod = new ArrayList<>();

    public void aggiungiProdotto(Prodotto prodotto) {
        listaProdotti.add(prodotto);
    }

    public Libreria(String nomeLibreria) {
        this.nomeLibreria = nomeLibreria;
    }

    public String getNomeLibreria() {
        return nomeLibreria;
    }

    public ArrayList<Prodotto> getOggettiConPrezzoMaggioreDi(double x) {
        for (Prodotto p : listaProdotti) {
            if (p.getPrezzo() > x) {
                prod.add(p);
            }
        }
        return prod;
    }


}

2 Risposte

  • Re: ToString per un arrayList di oggetti

    17/12/2022 - Bovy98 ha scritto:


    Non riesco a fare stampare i nomi ma solo i loro indirizzi in memoria (ex. @3455474) condivido gli script

    Devi definire tu il toString() nelle classi dei tuoi oggetti (sicuramente Libro e pure Libreria).

    Inoltre è sbagliato il posizionamento di

    ArrayList<Prodotto> prod = new ArrayList<>();

    perché essendo “di istanza” in Libreria, se chiami più volte il getOggettiConPrezzoMaggioreDi i prodotti si “accumulano” lì e non ha senso. Va creato dentro getOggettiConPrezzoMaggioreDi.

  • Re: ToString per un arrayList di oggetti

    18/12/2022 - andbin ha scritto:


    17/12/2022 - Bovy98 ha scritto:


    Non riesco a fare stampare i nomi ma solo i loro indirizzi in memoria (ex. @3455474) condivido gli script

    Devi definire tu il toString() nelle classi dei tuoi oggetti (sicuramente Libro e pure Libreria).

    Inoltre è sbagliato il posizionamento di

    ArrayList<Prodotto> prod = new ArrayList<>();

    perché essendo “di istanza” in Libreria, se chiami più volte il getOggettiConPrezzoMaggioreDi i prodotti si “accumulano” lì e non ha senso. Va creato dentro getOggettiConPrezzoMaggioreDi.

    risolto grazie mille. :) Dopo pubblico lo script così se serve a qualcun'altro può vederlo

Devi accedere o registrarti per scrivere nel forum
2 risposte