2013-11-25 4 views
24

В чем разница между .size() и .length? Является .size() только для arraylists и .length только для массивов?Разница между методами измерения размера и длины?

Если это так для петель как:

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

же, как

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

Это, по-видимому, язык программирования, и нет тега. – SBI

+0

Канонический ответ: http://stackoverflow.com/questions/300522/count-vs-length-vs-size-in-a-collection Это тоже хорошо: http://stackoverflow.com/ questions/1965500/length-and-length-in-java – RedGreenCode

ответ

0

Я держал пари (не язык, указанный) size() метод возвращает length свойство.

Однако действительный for цикл должен выглядеть так:

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

на основе синтаксиса я предполагаю, что это какой-то язык, который является потомком C. По то, что я видел, length используется для простых такие как массивы, и в большинстве случаев это свойство.

size() является функцией и используется для объектов динамической коллекции. Однако для всех целей использования вы не найдете каких-либо различий в результатах, используя любой из них. В большинстве реализаций размер просто возвращает свойство length.

+0

Язык Java ... и ваш ответ не применим к этому. –

+0

Этот тег добавлен после моего ответа, поэтому я не мог знать. Все другие ответы, которые задают java, приведены после года вопроса. – Buddha

+0

Исходный код в вопросе всегда был Java ... даже если вы не узнали его как таковой. Поэтому ваш ответ всегда был неприменим. В любом случае, теперь это нецелесообразно и должно быть удалено. –

33

size() - это метод, указанный в java.util.Collection, который затем унаследован каждой структурой данных в стандартной библиотеке. length - это поле на любом массиве (массивы - это объекты, вы просто не видите класс обычно), а length() - это метод на java.lang.String, который является просто тонкой оберткой на char[] в любом случае.

Возможно, по дизайну массивы и строки неизменяемы, и все подклассы коллекции верхнего уровня являются изменяемыми. Итак, где вы видите «длину», вы знаете, что это постоянный, и где вы видите «размер», это не так.

+7

", который является просто тонкой оберткой на String [] в любом случае". вы имели в виду 'char []'? –

+0

Я знаю, что эта тема сумасшедшая, но я думаю, что Мэтт прав, и разница имеет отношение к тому, как они хранятся в памяти. Элементы массива сохраняются последовательно, а способ доступа к ним - это «base + offset», где «base» - начало (индекс 0); это также делает массивы быстрее, относительно говоря. ArrayLists находятся в семействе связанных списков и не сохраняются последовательно, поэтому они «изменяемы по размеру». Итак, хотя концептуально связанные списки имеют «длину», они не хранятся в памяти как «список», поэтому вместо этого они используют более общий «размер». –

+0

'string []' должен быть 'char []' –

7

длина постоянна, которая используется, чтобы выяснить массив, хранящий емкость не количество элементов в массиве

Пример:

int a[] = new int[5] 

a.length всегда возвращает 5, который называется емкость массива, поэтому длина всегда возвращает значение CAPACITY. но

"количество элементов в массиве, называется размер"

Пример:

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

будет приводить к a.size = 1 и a.length = 5.

size() работы с коллекцией, length работы с массивами в Java

+3

Вы не можете вызывать 'size()' для примитивного массива, такого как 'int []'. Таким образом, 'a.size = 1' не имеет смысла. –

+0

См. Https://stackoverflow.com/questions/46073467/java-array-attribute-size для обсуждения этого ответа. – NPE

+0

@Chinmayjain: это не было заданием; это просто говорит, каков будет результат. – JESii

1
length variable: 

В Java, массив (не java.util.Array) предопределенный класс в самом языке.Чтобы найти элементы массива, дизайнеры использовали переменную длины (длина - член поля в предопределенном классе). Они должны были указать length(), чтобы иметь однородность в Java; но не сделал. Причина в производительности, выполнение переменной длины быстрее, чем вызов метода length(). Это похоже на сравнение двух строк с == и equals(). equals() - вызов метода, который занимает больше времени, чем выполнение оператора ==.

size() method: 

Он используется для поиска количества элементов, присутствующих в классах коллекции. Он определен в интерфейсе java.util.Collection.

Смежные вопросы