Collections Objekte einer ArrayList in der main() ausgeben

Vulkano

Mitglied
Hallo Bugfixers,

möchte alle Taxifahrten, die an dem Tag statt fanden ausgeben lassen. Mit einer void Methode habe ich das hingekriegt, allerdings brauche ich ein return in der Methode. Nun bin ich jetzt am verzweifeln.

Man soll sich in dem Übergabeparameter der Methode den Tag des Jahres als Integer Wert aussuchen und so sollten alle Fahrten ausgegeben werden. Die Methode ist in der TaxiKlasse und meine main() befindet sich in der Testklasse.

Welche Vorschläge bzw. Lösungen könnt ihr mir bieten 🙂?

P.S. Dies ist meine void Lösung.

//TaxiKlasse
Java:
import java.util.ArrayList;
public class TaxiKlasse implements TaxiInterface {
    // Variablen
    private int kundennummer, gefahreneKM, datumFahrt;
    private String vonOrt, nachOrt;
    // Konstruktor
    public TaxiKlasse(int kundennummer, int datumFahrt, int gefahreneKM, String vonOrt, String nachOrt) {
        super();
        this.kundennummer = kundennummer;
        this.datumFahrt = datumFahrt;
        this.gefahreneKM = gefahreneKM;
        this.vonOrt = vonOrt;
        this.nachOrt = nachOrt;
    }
    // Getters Setters
    public int getKundennummer() {
        return kundennummer;
    }
    public void setKundennummer(int kundennummer) {
        this.kundennummer = kundennummer;
    }
    public int getDatumFahrt() {
        return datumFahrt;
    }
    public void setDatumFahrt(int datumFahrt) {
        this.datumFahrt = datumFahrt;
    }
    public int getGefahreneKM() {
        return gefahreneKM;
    }
    public void setGefahreneKM(int gefahreneKM) {
        this.gefahreneKM = gefahreneKM;
    }
    public String getVonOrt() {
        return vonOrt;
    }
    public void setVonOrt(String vonOrt) {
        this.vonOrt = vonOrt;
    }
    public String getNachOrt() {
        return nachOrt;
    }
    public void setNachOrt(String nachOrt) {
        this.nachOrt = nachOrt;
    }
    // Methode
    @Override
    public void display(ArrayList<TaxiKlasse> k, int day) {
        for (int i = 0; i < k.size(); i++) {
            if (k.get(i).getDatumFahrt() == day) {
                System.out.println("1. Kundennummer: " + k.get(i).getKundennummer() + "\n2. Von: " + k.get(i).getVonOrt()
                                + "\n3. Datum der Fahrt: " + k.get(i).getDatumFahrt() + ". Tag des Jahres\n4. Nach: "
                                + k.get(i).getNachOrt() + "\n5. Entfernung: " + k.get(i).getGefahreneKM() + "\n");
            }
        }
    }
}


//TestKlasse
Java:
import java.util.ArrayList;
public class TestKlasse {
    public static void main(String[] args) {
       
        ArrayList<TaxiKlasse> taxi = new ArrayList<>();
        taxi.add(new TaxiKlasse(111, 188, 30, "Offenbach", "Dieburg"));
        taxi.add(new TaxiKlasse(222, 78, 20, "Dieburg", "Darmstadt"));
        taxi.add(new TaxiKlasse(333, 188, 8, "Wiesbaden", "Mainz"));
        taxi.add(new TaxiKlasse(444, 23, 100, "Münster", "Düsseldorf"));
        taxi.add(new TaxiKlasse(111, 44, 25, "Gießen", "Friedberg"));
        taxi.add(new TaxiKlasse(666, 188, 21, "Rodgau", "Darmstadt"));
        taxi.get(0).display(taxi, 188);
       
       
       
        
    }
}
 
Erstell eine neue, leere Liste und füg die Taxifahrer der Liste hinzu (anstatt sie auszugeben). Am Ende gibst du die neue Liste zurück
Java:
public List<TaxiKlasse> display(ArrayList<TaxiKlasse> k, int day) {}
 
Warum denn String? Als List<TaxiKlasse> macht es mEn mehr Sinn.
Java:
public List<TaxiKlasse> display(ArrayList<TaxiKlasse> k, int day) {
    List<TaxiKlasse> result = new ArrayList<>();
    for(TaxiKlasse taxi : k) { 
        if(taxi.getDatumFahrt() == day) {
             result.add(taxi);
        }
    }
    return result;
}
Oder mit Java8
Java:
public List<TaxiKlasse> display(ArrayList<TaxiKlasse> k, int day) {
    return k.stream().filter(taxi -> taxi.getDatumFahrt() == day).collect(Collectors.toList());
}
 

Zurück
Oben