Quelle est la différence entre les Flux et les Collections en Java 8
J'apprends sur les Flux en Java 8. Je suis confus au sujet de ce concept:
Une collection est une structure de données en mémoire, qui contient toutes les valeurs que la structure de données actuellement a—chaque élément de la collection doit être calculée avant d'être ajoutés à la collection. En revanche, un flux est un conceptuellement fixe structure de données dont les éléments sont calculées à la demande.
Je ne comprends pas. Comment une Collection uniquement contenir des valeurs que doit avoir été calculé avant qu'ils peuvent être ajoutés à la collection? Et aussi, ce qui est signifié par la comparaison d'un Ruisseau avec une structure de données?
Pas clair ce que vous demandez. Ce que tu ne comprends pas au sujet de 'calculée avant d'être ajoutée? ou "conceptuel de données fixes de la structure'? Il est également difficile de savoir si vous vous posez à propos de la signification de ces termes, comme par votre question, ou la différence entre colelctions et cours d'eau, comme par votre titre, ce qui est encore plus trivial.
Le but à la fois, sont différentes. Fondamentalement, l'objectif de la collection est de gérer ses éléments comme ajouter, de supprimer, d'ajouter à l'index particulier etc...), l'objectif d'un cours d'eau est de traiter de tels éléments, par exemple, trouver n'importe quel élément correspondant à un état, les éléments de filtre en se basant sur un état etc...
Le but à la fois, sont différentes. Fondamentalement, l'objectif de la collection est de gérer ses éléments comme ajouter, de supprimer, d'ajouter à l'index particulier etc...), l'objectif d'un cours d'eau est de traiter de tels éléments, par exemple, trouver n'importe quel élément correspondant à un état, les éléments de filtre en se basant sur un état etc...
OriginalL'auteur Jack | 2016-09-11
Vous devez vous connecter pour publier un commentaire.
Vous ne fournissez pas la source de votre devis, permettez-moi de citer le javadoc à vous:
En revanche, un
Collection
est un conteneur d'objets (les éléments). Vous ne pouvez pas obtenir (récupérer) un objet à partir d'une collection, sauf si l'objet a été précédemment ajoutés à la collection.You can't get (retrieve) an object from a collection unless the object was previously added to the collection.
Ce n'est pas vrai, il n'y a pas de contrat. Une collection peut commencer sa vie de non-vide; il peut également être paresseux et de réaliser un élément uniquement lorsque vous demandez pour elle (par exemple, Hibernate paresseux collections). Même de taille finie est discutable bien depuis l'itérateur peut renvoyer un nombre illimité d'éléments.Un
Iterator
n'est pas unCollection
, donc merci de ne pas confondre les deux. Les Collections ont unsize()
. --- Je envisager de donner une liste d'éléments lors de la construction afin d'être le même que l'ajout d'eux à l'époque. Les éléments sont en place avant de devenir un membre de la collection, qui est le point. --- Mais vous avez raison, c' est possible de mettre en œuvre laCollection
interface sans avoir réelles de stockage de sauvegarde, mise en veille prolongée en étant un exemple. Mais même là, il est techniquement au chargement différé à partir de la réel magasin (base de données). Les éléments existent déjà.Collection du contrat de mandat d'un itérateur, donc je ne suis pas confus quoi que ce soit. Les Collections ont un
size()
, c'est pourquoi j'ai dit que c'était "douteuse"---par exemple,Map
a la taille, pourtant, vous pouvez avoir plus de 2^31 éléments dans unHashMap
. La caractérisation des éléments comme "réellement existant" est philosophique. La peut aussi être calculée au moment de la réalisation, par exemple en lançant un dé.Topolnik: L'API Collection a été adapté pour permettre à plus de 231 éléments, dans ce cas, la collection est de retour
Integer.MAX_VALUE
desize()
, toutefois, l'implémentation actuelle deHashMap
a unint
la taille du champ en silence à débordement, afin de ne pas adhérer à la présente convention et des Ruisseaux créé à partir d'une telle carte serait manquer de signaler la bonnelong
taille, de sorte que je n'avais pas l'envisager une prise en charge de cas d'utilisation, mais juste un manque de détection d'erreur.Oui, les deux
Collection
etMap
spécifier ceInteger.MAX_VALUE
logique. Comme Java tas de croître, la non-conformité deHashMap
va devenir un enjeu.OriginalL'auteur Andreas