Hey meine Frage wäre, wie ich einen Stream nach bestimmten Kriterien zusammenfasse. Beispielsweise habe ich eine Klasse mit:
[CODE lang="java" title="Klasse Entry"]private static class Entry {
private String state;
private int activeInfected;
Entry(String state, int activeInfected) {
this.state = state;
this.activeInfected = activeInfected;
}
//returns the name of the federal state of this entry (Bundesland)
String getState() {
return state;
}
int getActiveInfected() {
return activeInfected;
}
}[/CODE]
Nun kann es in dem Stream<Entry> dazu kommen, dass mehrere Bundesländer gleichzeitig im Stream stehen aber dafür unterschiedliche activeInfected hat.(Da der obere Code vereinfacht ist und es eigentlich noch städte Name und Datum gibt, kann es sein dass mehrere gleiche Bundesländer in dem Stream stehen, aber unterschiedliche activeInfected nummern haben).
Bis jetzt bin ich mit dem Stream soweit:
[CODE lang="java" title="Stream"]public static List<String> safestStateAsList(Stream<Entry> entryStream) {
return entryStream
.sorted(Comparator.comparing(activeInfected))
.collect(Collectors.groupingBy(Entry::getState))
//todo Bundesländer zusammenfassen
;
}
[/CODE]
Die Funktion activeInfected in sorted() sortiert den Stream nach aktiven Infektionszahlen.(Funktioniert!)
Die Einträge mit den gleichen state Namen wüde ich gerne zusammenfassen aber leider weiß ich nicht, wie ich das mache(also welche Methode ich benutzen soll). Am Ende soll ich sozusagen eine List<String> zurückgeben, die meine Bundesländer nach aktiven Infektionszahlen sortiert.
Bsp: {[state = Hessen, active infected = 3], [state = Bayern, active Infected = 20]} und nicht
{[state = Hessen, active infected = 3], [state = Bayern, active Infected = 7], [state = Bayern, active Infected = 13]}
Vielen Dank im vorraus.
[CODE lang="java" title="Klasse Entry"]private static class Entry {
private String state;
private int activeInfected;
Entry(String state, int activeInfected) {
this.state = state;
this.activeInfected = activeInfected;
}
//returns the name of the federal state of this entry (Bundesland)
String getState() {
return state;
}
int getActiveInfected() {
return activeInfected;
}
}[/CODE]
Nun kann es in dem Stream<Entry> dazu kommen, dass mehrere Bundesländer gleichzeitig im Stream stehen aber dafür unterschiedliche activeInfected hat.(Da der obere Code vereinfacht ist und es eigentlich noch städte Name und Datum gibt, kann es sein dass mehrere gleiche Bundesländer in dem Stream stehen, aber unterschiedliche activeInfected nummern haben).
Bis jetzt bin ich mit dem Stream soweit:
[CODE lang="java" title="Stream"]public static List<String> safestStateAsList(Stream<Entry> entryStream) {
return entryStream
.sorted(Comparator.comparing(activeInfected))
.collect(Collectors.groupingBy(Entry::getState))
//todo Bundesländer zusammenfassen
;
}
[/CODE]
Die Funktion activeInfected in sorted() sortiert den Stream nach aktiven Infektionszahlen.(Funktioniert!)
Die Einträge mit den gleichen state Namen wüde ich gerne zusammenfassen aber leider weiß ich nicht, wie ich das mache(also welche Methode ich benutzen soll). Am Ende soll ich sozusagen eine List<String> zurückgeben, die meine Bundesländer nach aktiven Infektionszahlen sortiert.
Bsp: {[state = Hessen, active infected = 3], [state = Bayern, active Infected = 20]} und nicht
{[state = Hessen, active infected = 3], [state = Bayern, active Infected = 7], [state = Bayern, active Infected = 13]}
Vielen Dank im vorraus.