Collecteur de statistiques généralisé avec interface fonctionnelle

Java Hard generics

Tâche «Collecteur de statistiques généralisé avec interface fonctionnelle»

Implémentez une classe paramétrée `StatisticsCollector<T>` qui accepte des objets arbitraires et calcule les statistiques : le comptage, la somme (si T extends Number, sinon null), le minimum et le maximum (si T extends Comparable). Implémentez également une méthode `filter(Predicate<T>)` qui retourne un nouveau StatisticsCollector contenant les objets ayant passé le filtre. Entrée : un nombre n, puis n lignes, chaque ligne contient soit un nombre entier, soit une chaîne de caractères (sans espaces). Après avoir collecté tous les éléments, affichez les statistiques : count, sum (pour les nombres), min, max (si Comparable). Si le type ne prend pas en charge l'opération, affichez "N/A". Utilisez les generics et les wildcards.

Format d\ entrée

La première ligne contient un entier n (1 ≤ n ≤ 1000). Ensuite, n lignes, chacune contenant une valeur (nombre entier ou chaîne de caractères).

Format de sortie

Pour les objets collectés, affichez 4 lignes : count, sum ("N/A" si ce ne sont pas des nombres), min ("N/A" si pas Comparable), max ("N/A" si pas Comparable).

Exemples

Exemple 1

ENTRÉE
3 100 hello 200
SORTIE
3 300 100 200
main.java