[Java] La différence entre les méthodes Stream.of () et Arrays.stream () que vous ne connaissez pas de manière inattendue

introduction

Si vous voulez obtenir un Stream à partir d'un tableau en Java, vous pouvez l'obtenir en utilisant la méthode Stream.of () ou la méthode ʻArrays.stream () `.

À première vue, les deux méthodes semblaient donner le même résultat, et je ne connaissais pas la différence entre ces méthodes.

Ainsi, lorsque j'ai examiné la différence entre ces deux méthodes, j'ai constaté qu'il y avait deux différences majeures.

1. Différence de type renvoyé

Lorsqu'un tableau de types primitifs (par exemple int []) est utilisé comme argument pour ces méthodes, les types renvoyés seront différents.

Par exemple, lorsque int [] est utilisé comme argument, la méthode Stream.of () renvoie Stream, mais la méthode ʻArrays.stream () retourne ʻIntStream.

De plus, comme la classe idéale pour le traitement en utilisant un Stream de type primitif est un Stream primitif tel que ʻIntStream, il est nécessaire de le convertir en un Stream primitif lors de l'utilisation de la méthode Stream.of () `.

Il peut être converti en utilisant des méthodes telles que Stream.flatMapToInt () et Stream.flatMapToLong ().

2. Si l'argument est générique

Lorsque vous essayez d'obtenir un Stream à partir d'un tableau de types primitifs, la méthode ʻArrays.stream () `ne supporte que les trois types primitifs int [], long [] et double [].

Ainsi, par exemple, char [] ne peut pas être utilisé comme argument de la méthode ʻArrays.stream () `.

Cependant, le type de référence peut être utilisé comme argument sans aucun problème.

D'autre part, la méthode Stream.of () a des arguments génériques, donc n'importe quel type de tableau peut être utilisé comme argument.

Les contenus ci-dessus sont résumés dans le tableau 1 ci-dessous.

Tableau 1. Relation entre chaque méthode et le type de tableau pouvant être utilisé pour l'argument

Le type de tableau utilisé pour l'argument Arrays.stream() Stream.of()
type double
type de flotteur ×
type long
type int
type court ×
type d'octet ×
type de caractère ×
type booléen ×
Type de chaîne
Type de classe

en conclusion

De ce qui précède, il existe des différences entre la méthode Stream.of () et la méthode ʻArrays.stream () `dans le type de retour et les types qui peuvent être appliqués aux arguments, donc soyez particulièrement prudent lorsque vous utilisez un tableau de types primitifs. J'ai trouvé cela nécessaire.

En tant qu'impression individuelle, il semble sûr d'utiliser la méthode Stream.of (). Nous vous serions reconnaissants de bien vouloir nous dire ce que vous pensez de l'utilisation appropriée de ces méthodes.

Merci d'avoir lu jusqu'au bout.

référence

https://www.geeksforgeeks.org/difference-between-stream-of-and-arrays-stream-method-in-java/ https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/util/Arrays.html https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/util/stream/Stream.html

Recommended Posts

[Java] La différence entre les méthodes Stream.of () et Arrays.stream () que vous ne connaissez pas de manière inattendue
[Java] La différence entre les méthodes Stream.of () et Arrays.stream () que vous ne connaissez pas de manière inattendue
Résumé des mots réservés Java inconnus de manière inattendue
Utilisation pratique de Map que vous ne connaissez pas de manière inattendue
[Java] Comprendre la différence entre List et Set
[JAVA] Quelle est la différence entre interface et abstract? ?? ??
[Java débutant] Différence entre la longueur et la longueur () ~ Je ne sais pas ~
[Java] Différence entre == et égal
Différence entre Java et JavaScript (comment trouver la moyenne)
[Java] Vérifiez la différence entre orElse et orElseGet avec IntStream
Pensez aux différences entre les fonctions et les méthodes (en Java)
[JAVA] Différence entre abstrait et interface
[Java] Différence entre array et ArrayList
[Java] Quelle est la différence entre form, entity et dto? [Haricot]
[Java] Différence entre fermable et fermable automatiquement
[Java] Différence entre StringBuffer et StringBuilder
[Java] Différence entre longueur, longueur () et taille ()
Interpréter la relation entre les méthodes Java et les arguments en formules biochimiques
Comprendre la différence entre int et Integer et BigInteger en java et float et double
Différence entre final et immuable en Java
[Pour les débutants] Différence entre Java et Kotlin
À propos de la différence entre irb et pry
[Java] Différence entre la plage Intstream et la plageClosed
Différence entre int et Integer en Java
[Java] Différence entre equals et == dans une chaîne de caractères qui est un type de référence
[iOS] Comprendre la différence entre le cadre et les limites
[Rails / Active Record] À propos de la différence entre créer et créer!
Différence entre next () et nextLine () dans Java Scanner
Quelle est la différence entre SimpleDateFormat et DateTimeFormatter? ??
Résumer les différences entre l'écriture C # et Java
[Java] Différence entre "variable finale" et "objet immuable"
Journaux d'erreurs et gestion des exceptions qui sont souvent vus dans la zone Java
[Java] Remarque sur la différence entre le jugement d'équivalence et le jugement d'égalité lors de la comparaison de classes String
[Ruby] Différence entre obtenir et publier
Obtenez le résultat de POST en Java
[Ruby] J'ai réfléchi à la différence entre each_with_index et each.with_index
[Rails] J'ai étudié la différence entre les ressources et les ressources
Quelle est la différence entre System Spec et Feature Spec?
Différences entre les classes et les instances dans Ruby
À propos de la relation entre les méthodes HTTP, les actions et CRUD
[Java] Différence entre statique final et final dans les variables membres
[Rails] Quelle est la différence entre la redirection et le rendu?
Comparez la différence entre dockerfile avant et après docker-slim
Quelle est la différence entre ignorer et en attente? [RSpec]
[Swift] UITextField m'a appris la différence entre nil et ""
Maintenant dans la troisième année, le malentendu que j'ai remarqué est la différence entre la méthode equals et ==