Java ArrayList中size()方法的用途
Java ArrayList中size()方法的用途,java,list,Java,List,size()方法是ArrayList类只是一个getter,还是它执行任何类型的计算 如果它是一个getter,那么如果我多次调用它,是否可以安全地假设它将在某个点内联?size()方法不是一个标准的setter/getter,它是一个List的方法,它被定义为给出List的大小(元素数) ArrayList通过以下方式实现它 public int size() { 230 return size; 231 } 它维护一个名为size的int变量,当我
size()
方法是ArrayList
类只是一个getter,还是它执行任何类型的计算
如果它是一个getter,那么如果我多次调用它,是否可以安全地假设它将在某个点内联?size()
方法不是一个标准的setter/getter,它是一个List
的方法,它被定义为给出List
的大小(元素数)
ArrayList
通过以下方式实现它
public int size() {
230 return size;
231 }
它维护一个名为size
的int
变量,当我们添加它时,它会增加,删除时会减少。size()
方法不是一个标准的setter/getter,它是一个List
的方法,它被定义为给出列表的大小(元素数)
ArrayList
通过以下方式实现它
public int size() {
230 return size;
231 }
它维护一个名为size
的int
变量,当我们添加它时,它会增加,删除时会减少。如果您询问调用“size()”是否有任何开销,答案是“否”
下面是关于类似方法String.length()的类似讨论:
在这两种情况下(String.length()和ArrayList.size())的答案都是“O(1)”。如果您询问调用“size()”是否有任何开销,答案是“否”
下面是关于类似方法String.length()的类似讨论:
在这两种情况下(String.length()和ArrayList.size())的答案都是“O(1)”。是否将ArrayList.size()
内联取决于许多因素,但是,是的,至少在理论上,如果您引用size()
足够多的时间,并且如果满足所有其他内联条件,那么它将内联
大多数情况下,ArrayList只是一个类,与您可能编写的类没有什么不同。因此,它将受制于相同的内联规则/潜力
[刚刚检查了ArrayList的源代码,以下是我发现的:
public int size() {
return size;
}
这是你能得到的最普通的(并且高度内联)。所以我想说,size(),至少在理论上,如果引用size()
的次数足够多,并且满足所有其他内联条件,那么它将被内联
大多数情况下,ArrayList只是一个类,与您可能编写的类没有什么不同。因此,它将受制于相同的内联规则/潜力
[刚刚检查了ArrayList的源代码,以下是我发现的:
public int size() {
return size;
}
这是你能得到的最普通的(并且高度内联)。所以我想说,size()
几乎在所有情况下都会内联,在这些情况下,你不会以某种方式严重模糊类类型。]因为getter只是返回一个a字段,所以不会对性能产生负面影响。JIT足够聪明,可以内联调用,这样就不会有函数调用开销
请参见此处的类似问题:因为getter只是返回一个a字段,所以不会对性能产生负面影响。JIT足够聪明,可以内联调用,这样就不会有函数调用开销
请参见此处的类似问题:如果您希望真正了解size()方法是如何实现的,您可以下载java库的源代码,因为它位于GNU GPL下;OpenJDK 6源代码中的第196行
关于内联主题,您可能希望阅读以下文章:
如果您想真正了解size()方法是如何实现的,您可以下载GNU GPL下的java库源代码;OpenJDK 6源代码中的第196行
关于内联主题,您可能希望阅读以下文章: