Dupliqué possible: strong>
Nombre VS Longueur VS Taille dans une collection P> blockQuote>en Java en particulier, sur
Strings code>, vous appelez
string.length () code>, alors que dans
liste code> Vous appelez la liste
. Taille () code>. Existe-t-il une différence technique entre les deux termes, voir en tant que chaîne code> code> est vraiment une liste de
caractères code>? p>
Tous les commentaires appréciés. P>
6 Réponses :
Je ne pense pas. Il est plus probable que l'API fonctionne sur une grande équipe et différentes personnes ont des personnes différentes sur ce que le nom devrait être, en particulier avec des mots que synonyme dans certains contextes, tels que la taille et la longueur dans cette affaire. P>
En général, la longueur () est utilisée lorsque quelque chose a une longueur constante, tandis que la taille () est utilisée sur quelque chose avec une longueur variable. Passé que, je ne connais aucune bonne raison d'utiliser deux termes presque synonymes. P>
En supposant que cette longueur () est pour Imtubiltable i> B> types de données tels que string i> et taille () est pour mutable i > b> types de données tels que liste i>.
Comme d'autres ont touché, je pense que c'est une différence sémantique. Les tableaux sont très clairement définis et sont appelés la longueur. Une collection d'objets est plus floue, en partie parce que sa mise en œuvre (est-ce une matrice, une liste liée à un arbre?) N'est pas nécessairement votre préoccupation. Un arbre n'a pas vraiment de longueur, mais il a une taille définitive, la taille peut donc avoir plus de sens sémantiquement. P>
Ne pas utiliser la taille code> pour les tableaux est logique car les tableaux ont une taille mais ce n'est pas le nombre d'éléments. Un tableau
int [5] code> a une longueur de 5 et une taille de 20 (5 éléments et chacun est de 4 octets, faites 20 octets). Mais cela collide avec votre exemple d'arbre, comme si la taille de l'arbre est le nombre d'éléments de l'arborescence, alors comment nommeriez-vous la taille réelle qui en mémoire? Par conséquent, je n'utiliserais pas la taille des arbres non plus mais
comptez code> ou
numéros de type code>. J'évite
longueur code> en général, sauf si nous parlons de choses qui ont une longueur par définition, par exemple. Une chaîne a une longueur (et une taille!) Mais il ne faut pas avoir de compte
code>.
Idéalement, Dans la pratique, les trois (y compris Nombre code> serait le nombre d'éléments, et
taille code> serait la quantité de stockage adoptée (comme dans
Tailleof code>). p>
longueur code>, qui est le plus ambiguë) sont confusés dans de nombreuses bibliothèques largement utilisées, il ne reste plus à tenter d'imposer un motif sur eux à ce stade. p>
+1 pour admettre que les programmeurs ne sont pas parfaits.
Parfois, Taille code> est utilisé pour le nombre d'éléments et
capacité code> est pour la quantité de stockage prise.
@LitB, concernant C ++, n'est-il pas possible que vecteur
approprié code> se produit. Donc, une mise en œuvre pourrait retarder l'allocation réelle jusque-là - et puis, elle pourrait également allouer plus que prévu. Donc, la capacité
code> ressemble davantage à la mise en œuvre de la mise en oeuvre qu'un énoncé réel de l'utilisation du stockage. Nul doute, une telle mise en œuvre briserait tout à fait quelques programmes existants, ceux qui font un
v.Reserve (200) code>, puis vont directement pour
& V [100] code>.
Un tel comportement invaliderait .begin () code> et
.end () code>, je pense. Cependant, vous êtes garantis qu'ils restent valables pour au moins
.capacité () - .Size () code> push-backs.
Pour moi, P>
"longueur" implique une commande, vous mesurez une longueur du début à la fin. P>
"Taille" implique la taille de quelque chose sans impliquer une commande, commencer ou se terminer. p>
Pour moi, "Taille" est utilisé lors de la description d'une structure ou d'une autre façon d'organiser des octets dans un ordinateur. Il ne faut pas nécessairement être instancié. "longueur", d'autre part, implique à quel point un tampon particulier d'octets en mémoire est à un point donné. P>
E.g. Quelle est la longueur du tampon que vous fournissez? C'est le même nombre d'octets que la taille de la structure x. P>
Peut-être que la différence est que
longueur code> est utilisé avec des séquences (c'est-à-dire une contiguë). Et plus la taille
générale code> est utilisée avec des ensembles (juste une collection d'articles)?
Discussion similaire dans Stackoverflow .Com / Questions / 300522 / ...