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.
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 ()
.
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 | ○ | ○ |
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.
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