Eingelesene Daten in POJOs einfügen


Tomethy

Grünschnabel
#1
Guten Tag,

ich habe momentan die folgende Aufgabe bekommen: "Es ist eine Java-Anwendung zu erstellen, welche die Ausgangsdaten einliest und intern im Arbeitsspeicher in die POJOs schreibt."

Ausgangsdaten habe ich eingelesen (aus csv Datei), bloß komme ich nun nicht weiter. Muss ich da mit Arrays arbeiten oder wie komme ich dazu?

Einlesen:
Java:
public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(new File ("Ausgangsdaten1.csv"));
           
       
        scanner.useDelimiter(",");
        while(scanner.hasNext()){
            System.out.print(scanner.next()+"|");
        }
        scanner.close();
    }

    }
Hier eins meiner Objekte:
Java:
public class Hersteller {

    private int herstellerID;
    private String herstellerName;
   
    public Hersteller(int dieHerstellerID, String derHerstellername) {
        herstellerID = dieHerstellerID;
        herstellerName = derHerstellername;
    }
    public void getHerstellerID(int dieHerstellerID) {
        herstellerID = dieHerstellerID;
    }
    public void getHerstellername(String derHerstellername) {
        herstellerName = derHerstellername;
    }
    public int setHerstellerID() {
        return herstellerID;
        }
    public String setHerstellerName() {
        return herstellerName;
    }
   
   
    }

Mit freundlichen Grüßen

Tomethy
 

melmager

Erfahrenes Mitglied
#2
Also POJO steht für "Plain Old Java Object"
Unter dem Strich eine classe mit geter und seter Funktionen.
Deine class Hersteller ist schon mal die richtige Richtung nur das du get und set vertauscht hast.
get = hole Wert also Function mit Rückgabewert aber keine Wertübergabe
set = setze Wert void als Rückgabe und Wertübergabe.

Code:
public int getHerstellerID() {
        return herstellerID;
}

public void setHerstellerID(int id) {
herstellerID = id;
}
und ja pro CSV Zeile wirst du eine classe benötigen.
Um die classen zu speichern würde ich ArrayList einsetzen.

beim Einlesen musst du zeilenweise einlesen und dann die zeile splitten um dann die werte der classe
zu übergeben.
da im CSV alles String ist muss auch irgendwo String zu integer gewandelt werden.
meineeine würde das der classe überlassen
Code:
// aus
public void setHerstellerID(int id)
// wird
public void setHerstellerID(String id)
dann sollte man aber auch Fehlerbehandlung einbauen.
entweder wirft die function eine exeption oder gibt ein boolean wert true zurück wenn die wandlung von string zu int geklappt hat
 
Zuletzt bearbeitet:

Tomethy

Grünschnabel
#3
Vielen Dank für deine Antwort.
Dass die setter und getter vertauscht waren hatte ich nicht bemerkt, danke für den Hinweis.
Die Umwandlung von String zu integer werde ich einbauen, danke dafür.

Bloß was ist meine nächste Sache die ich machen muss? Ich kann die Daten einlesen und in der Konsole abrufen, wie lasse ich die Informationen nun den Klassen zukommen?

Das Einlesen habe ich nochmal überarbeitet:
Java:
public class csvEinlesen {

    public static void main(String[] args) {

        String csvFile = "Ausgangsdaten1.csv";
        BufferedReader br = null;
        String line = "";
        String cvsSplitBy = ";";

        try {

            br = new BufferedReader(new FileReader(csvFile));
            while ((line = br.readLine()) != null) {

                String[] array = line.split(cvsSplitBy);

                String hersteller = array[0];
                String modell = array[1];
           
                System.out.println(hersteller);
       

            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}
Im Bild sieht man meine momentanen Klassen. Alles unter "csvEinlesen" sieht wie die Klasser "Hersteller" aus.
 

Anhänge

Zuletzt bearbeitet:

melmager

Erfahrenes Mitglied
#4
Code:
//arraylist anlegen vor dem try
ArrayList<Hersteller> pojoliste = new ArrayList<>();

// vor der ausgabe mit println
Hersteller pojo = new Hersteller(hersteller,modell);
// speichern
pojoliste.add(pojo);
damit hast du eine arraylist mit den daten