Verallgemeinerter Statistik-Sammler mit funktionaler Schnittstelle

Java Hard generics

Aufgabe «Verallgemeinerter Statistik-Sammler mit funktionaler Schnittstelle»

Implementieren Sie eine parametrisierte Klasse `StatisticsCollector<T>`, die beliebige Objekte entgegennimmt und Statistiken berechnet: Anzahl, Summe (falls T extends Number, sonst null), Minimum und Maximum (falls T extends Comparable). Implementieren Sie zusätzlich die Methode `filter(Predicate<T>)`, die einen neuen StatisticsCollector mit den gefilterten Objekten zurückgibt. Eingabedaten: Zahl n, dann n Zeilen, jede Zeile enthält entweder eine ganze Zahl oder eine Zeichenkette (ohne Leerzeichen). Nach dem Sammeln aller Elemente geben Sie die Statistik aus: count, sum (für Zahlen), min, max (falls Comparable). Wenn der Typ die Operation nicht unterstützt, geben Sie "N/A" aus. Verwenden Sie Generics und Wildcards.

Eingabeformat

In der ersten Zeile eine ganze Zahl n (1 ≤ n ≤ 1000). Dann n Zeilen, jede enthält einen Wert (ganze Zahl oder Zeichenkette).

Ausgabeformat

Für die gesammelten Objekte geben Sie 4 Zeilen aus: count, sum ("N/A" falls keine Zahlen), min ("N/A" falls nicht Comparable), max ("N/A" falls nicht Comparable).

Beispiele

Beispiel 1

EINGABE
3 100 hello 200
AUSGABE
3 300 100 200
main.java