Java:
public class EintragSammler {
final List<Eintrag> eintraege = new ArrayList<>();
private String tempZeitstempel;
public void reduce(String s) {
if (tempZeitstempel == null) {
// erste Zeile eines Eintrags aus der Textdatei verarbeiten
}
else {
// zweite Zeile eines Eintrags aus der Textdatei verarbeiten
tempZeitstempel = null;
}
}
public void join(EintragSammler that) {
this.eintraege.addAll(that.eintraege);
}
Java:
public class Odyssee {
private List<Eintrag> parseEintragListe(Stream<String> lines) {
// Hier kommt der Code zur Erzeugung der Einträge aus dem Zeilen-Stream rein
// Verwenden Sie collect in Kombination mit einem EintragSammler-Objekt
return Collections.emptyList();
}
public static void main(String[] args) {
Odyssee odyssee = new Odyssee();
List<Eintrag> eintraege = odyssee.readFromInputfile("odyssey.txt");
// Hier rufen Sie die Methoden zur Analsye der Daten auf
}
// Das kann so bleiben
private List<Eintrag> readFromInputfile(String name) {
Path inputfile = Path.of(name);
try (Stream<String> lines = Files.lines(inputfile)) {
return parseEintragListe(lines);
} catch (IOException e) {
throw new RuntimeException("Could not read file: " + name);
}
}
}
Kann mir jemand sagen wie man reduce in EintragsSammler implementieren soll? Also wie wird Tempzeitstempel gesetzt ? Einfach mit this.Temzeitstempel = Zeitstempel? Ein Eintrag besteht immer aus einem Zeitstempel und einer Antwortzeit und in den Zeilen der Datei steht immer abwechseln Zeitstempel und Antowortzeit.
Code:
public record Eintrag(LocalDateTime time, int answertime) {
public Eintrag(String time, String answertime) {
this(parseTime(time), Integer.parseInt(answertime));
}
In der Klasse Eintrag werden die beiden Werte dann zum Int geparst. Kenne mich leider noch nicht nicht wirklich mit Streams aus. Mit map könnte ich ja nur einen Wert mappen ich brauche ja aber jeweils zwei. Also wie kann ich immer auf 2 Elemente zugreifen?
Zuletzt bearbeitet: