Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo! Und zwar geht es momentan um CSV-Verarbeitung und habe dazu zunächst die Aufgabe, die beiden Methoden getTeamByName in der Klasse Course zu implementieren....und danach die Methode printCourse, um dann in einer Main-Methode (extra Klasse) eine Textdatei mit eingelesenen Daten zu erzeugen.
Meine Fragen sind zunächst wie ich diese Methoden am besten implementieren kann...ich habe bei getTeambyName es schon mit Iterator versucht,ohne großen Erfolg.
Freue mich über jeden Tipp! Danke!
Java:
import java.io.PrintWriter;
import java.util.SortedSet;
import java.util.TreeSet;
public class Course {
private final String moduleId;
private final String courseName;
private final SortedSet<Team> teams;
private final SortedSet<Person> participants;
public Course(String moduleId, String courseName) {
this.moduleId = moduleId;
this.courseName = courseName;
teams = new TreeSet<>();
participants = new TreeSet<>();
}
public String getModuleId() {
return moduleId;
}
public String getCourseName() {
return courseName;
}
public SortedSet<Team> getTeams() {
return teams;
}
/**
* Returns the team with the name <code>n</code>.
*
* @param n the name of the team to find
* @return the team named <code>n</code>, or <code>null</code> if no such
* team exists in this Course.
*/
public Team getTeamByName(String name) {
// TODO
throw new UnsupportedOperationException("Not yet implemented");
}
public SortedSet<Person> getParticipants() {
return participants;
}
public void addTeam(Team t) {
teams.add(t);
}
public void addParticipant(Person p) {
participants.add(p);
}
/**
* Prints data of this Course in human-readable form using the
* {@link PrintWriter} <code>w</code>.
*
* @param w a PrintWriter
*/
public void printCourse(PrintWriter w) {
// TODO
throw new UnsupportedOperationException("Not yet implemented");
}
}
Du möchtest Dateien einlesen, und diese bearbeiten. Das kannst du entweder roh mit einem filereader oder speziell für csv mit entsprechenden libs. Beispiel opencsv Read / Write CSV file in Java. Parse CSV in Java
Damit geht es sehr einfach
Vielen Dank! Das mit dem Einlesen habe ich verstanden. Vielmehr bereiten mir die getTeamByName und printCourse-Methode Probleme. Ich sitze jetzt schon ewig davor, weiß aber nicht recht wie ich diese Methoden implementieren soll
Dein Problem ist, dass du deine Teams in einem Set hast. Die suboptimale Lösung wäre, über alle Teams zu iterieren und den Namen mit dem Methodenargument zu vergleichen. Ich würde aber eher dazu tendieren, der Klasse course eine zusätzliche member-Variable zu verpassen:
private final Map<String,Team> teamsByName;
zu verpassen.
Ich sehe allerdings noch ein Problem: man könnte über getTeams() das Set mit Teams holen und so welche hinzufügen ohne dass der Rest der Klasse davon etwas mitbekommt. Ich würde hier ggf. einen Wrapper benutzen damit das read-only ist. Schau dir mal die Klasse Collections aus der api an.
Warum du sortedset verwendest ist mir auch schleierhaft. Die Sortierung ist meiner Meinung nach überflüssig. Ich empfehle stattdessen hashset.
Des Weiteren soll ich dann mit den Daten aus der CSV-Datei Java-Objekte erzeugen (also die Datei nicht nur einfach ausgeben), sodass die Beziehung der Klasse Course zu den Klassen Team und Person eingehalten wird. Könnte mir dazu jemand einen Tipp geben! Bin für jede Antwort dankbar!
Danke
Danke. Das Prinzip habe ich verstanden. Ich weiß nur nicht wie ich die Daten aus der CSV-Datei in ein neues Java-Objekt (z.B. neuer Kurs) speichern kann bzw. wie ich so ein Objekt mit den Daten am besten erzeuge. Gibt es da vielleicht ein Bsp. oder eine Orientierung? Vielen Dank für die Mühe!
......Ich weiß nur nicht wie ich die Daten aus der CSV-Datei in ein neues Java-Objekt (z.B. neuer Kurs) speichern kann bzw. wie ich so ein Objekt mit den Daten am besten erzeuge. .....