对于初学者来说,学习Java的困惑之一是如何在Java中找到数组和ArrayList的长度?造成这种困惑的主要原因是两者之间计算长度的方法不一致。在数组上调用size()方法,在ArrayList上调用length,甚至是length(),是初学者常犯的编程错误。造成这种混淆的主要原因是Java中对数组的特殊处理。 Java本地数组有内置的长度属性,但没有size()方法,而Java库中的容器,即ArrayList<>,Vector<>等集合类,都有size()方法。
还有一件事让人更加困惑,那就是容量,在任何时候,任何集合类的容量都是集合可以容纳的最大元素数。集合的大小必须小于或等于它的容量。
尽管在现实中,集合的大小甚至在它达到容量之前就会自己调整,由laod因素控制。 我已经在我的文章《Java中ArrayList和Array的区别》中提到了这一点,如果你还没有读过,你也可以在那里找到一些有用的细节。
所以,使用length属性来获取数组中的元素数,也就是所谓的长度,而在ArrayList、Vector等集合类中,使用size()方法来做同样的事情。为了给你提供更多的信息,请考虑以下几行代码,你能发现困扰我们初学者朋友的错误吗。
阵列的长度与ArrayList的大小
import
这个程序会在items.size()行抛出编译错误,因为items是一个数组,而不是ArrayList,但这很容易混淆它们,尤其是当你刚开始学习Java编程语言时。
顺便说一下,你也可以在一行中初始化ArrayList,如下例所示:
Arrays.asList("First", "Second", "Third", "Fourth", "Fifth");
这是在同一地方声明和初始化ArrayList的方便方法,类似于Java中的数组。 所以下次不要混淆length和size(),数组是Java中的特殊对象,有一个叫做length的属性,指定数组中的桶的数量,而ArrayList 是一个集合类,它继承了size()方法,返回集合中元素的数量。记住,大小与集合的容量不同。在任何时候,大小都<=集合的容量。