Résumé de la spécialisation des primitives Java

Préface

Nous avons résumé l'interface fonctionnelle de Java SE 8 et la spécialisation primitive de Stream. Le but est de se préparer à l'examen Java Gold.

Qu'est-ce que la spécialisation primitive?

En java, les primitives ne peuvent pas être données aux arguments de type tels que T, R de R s'appliquent (T t) de Function \ <T, R>. Dans l'interface fonctionnelle et Stream, certaines classes sont définies individuellement afin que int, long et double puissent être exploités comme des génériques (sans encadrer la classe wrapper). C'est ce qu'on appelle un type avec une spécialisation primitive. Si vous ne vous souvenez que de int, il n'y a aucune différence entre long et double.

Organiser les interfaces fonctionnelles

[java.util.function] 1 Interface toutes fonctions

Nom de classe de base Spécialisation à int Spécialisation à long Spécialisation pour doubler Nom de la méthode de base
Function<T,R> IntFunction<R> LongFunction<R> DoubleFunction<R> apply()
Function<T,R> IntToDoubleFunction LongToDoubleFunction DoubleToIntFunction apply()
Function<T,R> IntToLongFunction LongToIntFunction DoubleToLongFunction apply()
Function<T,R> ToIntFunction<T> ToLongFunction<T> ToDoubleFunction<T> apply()
UnaryOperator<T> IntUnaryOperator LongUnaryOperator DoubleUnaryOperator apply()
BiFunction<T,U,R> ToIntBiFunction<T,U> ToLongBiFunction<T,U> ToDoubleBiFunction<T,U> apply()
BinaryOperator<T> IntBinaryOperator LongBinaryOperator DoubleBinaryOperator apply()
Predicate<T> IntPredicate LongPredicate DoublePredicate test()
BiPredicate<T,U> - - - test()
Consumer<T> IntConsumer LongConsumer DoubleConsumer accept()
BiConsumer<T,U> ObjIntConsumer<T> ObjLongConsumer<T> ObjDoubleConsumer<T> accept()
Supplier<T> IntSupplier LongSupplier DoubleSupplier get()
BooleanSupplier - - - getAsBoolean()

point

--Dans accept () de ObjIntConsumer correspondant à BiConsumer, l'argument 1 est un objet et l'argument 2 est un int. Ceci est utilisé comme accumulateur pour [IntStream.collect ()] 2.

[java.util.stream] Organiser les spécialisations primitives dans 0

type

Les 3 classes suivantes sont des types spécialisés primitifs de Stream \ .

Ici, nous l'appellerons un flux spécialisé primitif.

Opérations de terminaison spécifiques aux flux spécialisés primitifs

--sum (): prenez la somme. --avage (): prend la moyenne arithmétique. La valeur de retour est facultative Double. --max (): Puisque la commande est explicite, elle ne prend pas d'argument contrairement à Stream \ .max (Comparator). --min (): Puisque la commande est explicite, elle ne prend pas d'argument contrairement à Stream \ .min (Comparator).

Conversion mutuelle entre Stream \ et les flux spécialisés primitifs

À partir d'un flux de spécialisation primitif

mapToXxx (), méthode

this Valeur de retour Nom de la méthode argument
IntStream LongStream mapToLong *1 IntToLongFunction
IntStream DoubleStream mapToDouble *1 IntToDoubleFunction
IntStream Stream<T> mapToObj *2 IntFunction<? extends T>
LongStream IntStream mapToInt LongToIntFunction
LongStream DoubleStream mapToDouble *1 LongToDoubleFunction
LongStream Stream<T> mapToObj *2 LongFunction<? extends T>
DoubleStream IntStream mapToInt DoubleToIntFunction
DoubleStream LongStream mapToLong DoubleToLongFunction
DoubleStream Stream<T> mapToObj *2 DoubleFunction<? extends T>

* 1 Une simple conversion ascendante peut être effectuée avec la méthode asXxx ().

this Valeur de retour Nom de la méthode argument
IntStream DoubleStream asDoubleStream -
IntStream LongStream asLongStream -
LongStream DoubleStream asDoubleStream -

* 2 La boxe simple peut être effectuée avec la méthode boxed ().

this Valeur de retour Nom de la méthode argument
IntStream Stream<Integer> boxed -
LongStream Stream<Long> boxed -
DoubleStream Stream<Double> boxed -

Du Stream \ vers un flux spécialisé primitif

mapToXxx (), méthode

this Valeur de retour Nom de la méthode argument
Stream<T> IntStream() mapToInt ToIntFunction<? super T>
Stream<T> LongStream() mapToLong ToLongFunction<? super T>
Stream<T> DoubleStream() mapToDouble ToDoubleFunction<? super T>

flatMapToXxx () méthode

Une combinaison d'aplatissement et de spécialisation primitive. ** Celui qui semble être à l'examen **.

this Valeur de retour Nom de la méthode argument
Stream<T> IntStream() flatMapToInt Function<? super T,? extends IntStream>
Stream<T> LongStream() flatMapToLong Function<? super T,? extends LongStream>
Stream<T> DoubleStream() flatMapToDouble Function<? super T,? extends DoubleStream>

Veuillez me faire savoir s'il y a quelque chose à ajouter.

Recommended Posts

Résumé de la spécialisation des primitives Java
Résumé des connaissances Java
Résumé des génériques Java
Résumé relatif à Java
Résumé du document Java 11
Résumé des nouvelles fonctionnalités de Java 12
[Résumé] Par exemple, préparation de l'environnement Java
3ème résumé efficace de Java
Résumé des nouvelles fonctionnalités de Java 13
Java statique [Résumé personnel]
Résumé des threads sûrs ~ Java ~
Résumé du lien de développement Java
Résumé personnel sur Java
Résumé des nouvelles fonctionnalités de Java 10
résumé des expressions régulières java
Résumé des nouvelles fonctionnalités de Java 14
Résumé du support Java 2018
Résumé du modèle de conception Java
Résumé du mot réservé Java
Résumé approximatif du flux Java8
Qu'est-ce que l'assertion Java? Résumé.
[Java11] Résumé du flux -Avantages du flux-
Révision et résumé de Progate Java (débutant)
[Java] Résumé des expressions régulières
J'ai étudié les types primitifs Java
[Java] Résumé des opérateurs (opérateur)
Flux Java8, résumé de l'expression lambda
Résumé orienté objet par les débutants (Java)
Résumé des bases du langage Java
Astuces Java - Résumé de l'exécution de Spring
Résumé de la classe Java Math
[Java11] Résumé de l'utilisation du flux -Basics-
[Java] Résumé de la syntaxe de contrôle
Résumé du traitement des erreurs Java
[Java] Résumé des modèles de conception
[Java] Résumé des opérations mathématiques
Considération sur le cadre de persistance Java 2017 (résumé) -1
[Pour les débutants] Résumé du constructeur java
Date de sortie de Java et résumé EOL
Types primitifs Java, types de référence, immuable, mutable
Résumé
Résumé de l'algorithme AtCoder 400 points (édition Java)
Java
A propos des types primitifs et des types de référence Java
Récapitulatif du problème Java "Pass by Reference"
Java EE 8 (Jakarta EE 8) Résumé des nouvelles fonctionnalités
Java
Résumé de la programmation orientée objet utilisant Java
[Java Silver] Résumé des points de modification d'accès
Résumé de la session d’étude interne des recrues [Java]
Comment créer un résumé de calendrier Java
[java] Résumé de la gestion des caractères
Récapitulatif des modifications autres que JEP de Java10
[Java] Résumé personnel des instructions conditionnelles (basique)
[Java] [Maven3] Résumé de l'utilisation de Maven3
Résumé Java des conversions de types fréquemment recherchées
[Java] Méthode d'instance, champ d'instance, méthode de classe, champ de classe, résumé du constructeur
Résumé de Java Math.random et import (calendrier)