Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList中size()方法的用途_Java_List - Fatal编程技术网

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行

关于内联主题,您可能希望阅读以下文章: