【发布时间】:2011-01-13 09:54:08
【问题描述】:
在Java中,有一个List接口和size()方法来计算List的大小。
- 当我拨打
List.size()时,它是如何计算的? - 是线性计数,还是计数确定后
size()时只返回值?
【问题讨论】:
-
它不是线性的。它的 O(1)。刚刚在这里找到stackoverflow.com/questions/863469/…
在Java中,有一个List接口和size()方法来计算List的大小。
List.size()时,它是如何计算的?size()时只返回值?【问题讨论】:
大小定义为列表中元素的数量。实现没有指定 size() 成员函数如何操作(迭代成员、返回存储的计数等),因为 List 是一个接口而不是实现。
一般来说,大多数具体的 List 实现都会在本地存储它们的当前计数,大小为 O(1) 而不是 O(n)
【讨论】:
java.util.List 是一个接口,而不是一个类。对于不同的具体实现,size()方法的实现可能会有所不同。在java.util.List 实现上的size() 方法的合理实现是将int 类型的实例成员初始化为零,并在向List 添加/删除项目时适当地递增/递减它。 size() 方法可以简单地返回上述实例成员。当然,这只是一个例子。有关完整的详细信息,您始终可以查看内置 List 实现的源代码。所有源代码都已提供多年。
【讨论】:
I 前缀是匈牙利噪音。 java程序员一般都知道List(还有Map和Set和Collection等)是接口。另一方面,java 中的许多接口使用able 后缀。例如。 Serializable、Cloneable、Iterable 等。所以我猜 java 内部也不是一致的......