Wie kann ich eine Array List von einer methode einer anderen übergeben?

2 Antworten

Ich verstehe die Frage irgendwie nicht. Im Ordner-Objekt erstellst du einfach eine ArrayList, wo du alle Dateien drin speicherst, die in dem Ordner liegen. Bei addFile fügst du der Liste eine Datei hinzu und bei listFiles gibst du eine Kopie der Liste zurück.

import java.io.FileNotFoundException;
import java.util.ArrayList;


public class Ordner {
    private String name;
    private ArrayList<Datei> dateien = new ArrayList<>();

    public Ordner (String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void addFile(Datei file) {
        dateien.add(file);
    }

    public ArrayList<Datei> getFiles() {
        // Wichtig: Nicht die Dateienliste selbst zurückgeben, weil man sie sonst ungeprüft verändern kann
        return new ArrayList<>(dateien);
    }

    public void printFiles() {
        for (Datei datei: dateien) {
            System.out.println(datei.getName());
        }
    }

    public long getSize() {
        return dateien
            .stream()
            .mapToLong(Datei::getSize)
            .sum();
    }

    public ArrayList<Datei> getFiles(String typ) {
        return new ArrayList<>(
            dateien
                .stream()
                .filter(datei -> datei.getTyp().equals(typ))
                .toList()
        );
    }

    public Datei getFile(String name) throws FileNotFoundException {
        return dateien
            .stream()
            .filter(datei -> datei.getName().equals(name))
            .findAny()
            .orElseThrow(()-> new FileNotFoundException("Die Datei \"" + name + "\" wurde in diesem Ordner nicht gefunden."));
    }
}

Du kannst es direkt im Konstruktor übergeben oder eine Setter-Methode dafür machen.

Wo das Array herkommt, ist dabei völlig egal, solange es vom Typ her das richtige ist.