2013-11-25 13 views
24

Was ist der Unterschied zwischen .size() und .length? Ist .size() nur für Arraylisten und .length nur für Arrays?Unterschied zwischen Größe und Länge Methoden?

Wenn ja für Schleifen wie:

for (int i=0; i <= values.length-1; i++) 

gleiche wie

for (int i=1; i <= values.length; i++) 
+0

Dies scheint Programmiersprache spezifisch, und es gibt kein Tag. – SBI

+0

Die kanonische Antwort: http://stackoverflow.com/questions/300522/count-vs-length-vs-size-in-a-collection Dieser ist auch gut: http://stackoverflow.com/ Fragen/1965500/length-and-length-in-java – RedGreenCode

Antwort

0

I (keine Sprache angegeben) size() Methode gibt length Eigenschaft setzen.

jedoch gültig for Schleife sollte wie folgt aussieht:

for (int i = 0; i < values.length; i++) {} 
0

Basierend auf der Syntax Ich gehe davon aus, dass es irgendeine Sprache, die Nachkommen von C als je, was ich gesehen habe, length für einfache verwendet wird Sammlungselemente wie Arrays und in den meisten Fällen ist es eine Eigenschaft.

size() ist eine Funktion und wird für dynamische Sammlungsobjekte verwendet. Für alle Zwecke der Verwendung finden Sie jedoch keine Unterschiede in den Ergebnissen mit einem der beiden. In den meisten Implementierungen gibt die Größe einfach die Längeneigenschaft zurück.

+0

Die Sprache ist Java ... und Ihre Antwort ist darauf nicht anwendbar. –

+0

Dieses Tag wurde nach meiner Antwort hinzugefügt, also konnte ich es nicht wissen. Alle anderen Antworten, die auf Java zielen, werden nach einem Jahr der Frage gegeben. – Buddha

+0

Der Quellcode in der Frage war immer Java ... auch wenn Sie es nicht als solches erkannt haben. Also war deine Antwort immer unzutreffend. So oder so, es dient jetzt keinem Zweck und sollte gelöscht werden. –

33

size() ist eine in java.util.Collection angegebene Methode, die dann von jeder Datenstruktur in der Standardbibliothek geerbt wird. length ist ein Feld auf jedem Array (Arrays sind Objekte, Sie sehen die Klasse normalerweise nicht), und length() ist eine Methode auf java.lang.String, die nur ein dünner Wrapper auf einem char[] ist.

Möglicherweise sind Arrays und Strings von Grund auf unveränderbar, und alle Unterklassen der Top-Level-Collection sind änderbar. Also, wo Sie "Länge" sehen, wissen Sie, dass das konstant ist, und wo Sie "Größe" sehen, ist es nicht.

+7

"das ist sowieso nur ein dünner Wrapper auf einem String []". meinst du 'char []'? –

+0

Ich weiß, dass dieser Thread alt ist, aber ich denke Matt hat Recht und der Unterschied hat damit zu tun, wie sie im Speicher gespeichert sind. Array-Elemente werden sequentiell gespeichert, und die Art, auf die Sie zugreifen, ist "Basis + Offset", wobei "Basis" der Start ist (Index 0); Dies macht Arrays relativ gesehen auch schneller. ArrayLists sind in der verknüpften Listenfamilie und werden nicht sequenziell gespeichert, weshalb sie "resizable" sind. Also, obwohl konzeptionell verknüpfte Listen eine "Länge" haben, werden sie nicht im Speicher als eine "Liste" gespeichert, und sie verwenden stattdessen die allgemeinere "Größe". –

+0

'string []' sollte 'char []' –

7

Länge konstant ist, die das Array verwendet wird Speicherkapazität, um herauszufinden, nicht die Anzahl der Elemente in dem Array

Beispiel:

int a[] = new int[5] 

a.length liefert immer 5, die aufgerufen wird, Kapazität eines Arrays, so dass die Länge immer die KAPAZITÄT zurückgibt. aber

"Anzahl der Elemente in dem Array Größe genannt"

Beispiel:

int a[] = new int[5] 
a[0] = 10 

wird in a.size = 1 und a.length = 5 führen.

size() Arbeiten mit der Sammlung, length Arbeiten mit Arrays in Java

+3

Sie können 'size()' nicht für ein primitives Array wie 'int []' aufrufen. Also macht 'a.größe = 1' keinen Sinn. –

+0

Siehe https://stackoverflow.com/questions/46073467/java-array-attribute-size für eine Diskussion dieser Antwort. – NPE

+0

@Chinmayjain: Das war keine Aufgabe; das sagte nur, was das Ergebnis sein würde. – JESii

1
length variable: 

In Java-Array (nicht java.util.Array) eine vordefinierte Klasse in der Sprache selbst.Um die Elemente eines Arrays zu finden, verwendeten Konstrukteure eine Längenvariable (Länge ist ein Feldelement in der vordefinierten Klasse). Sie müssen Länge() selbst angegeben haben, um in Java Einheitlichkeit zu haben; aber nicht. Der Grund dafür ist, dass die Ausführung der length-Variablen schneller ist als das Aufrufen der Methode length(). Es ist vergleichbar mit zwei Strings mit == und equals(). equals() ist ein Methodenaufruf, der mehr Zeit benötigt als die Ausführung von == operator.

size() method: 

Es wird verwendet, um die Anzahl der Elemente in Auflistungsklassen zu finden. Es ist in der java.util.Collection-Schnittstelle definiert.

Verwandte Themen