Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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 确定列表大小的最快方法_Java - Fatal编程技术网

Java 确定列表大小的最快方法

Java 确定列表大小的最快方法,java,Java,我需要知道我的arraylist是否有10个插槽。调用大小是更快的函数,还是像调用第10个索引一样更快?还有什么方法可以让我检查某些功能的速度吗?有点像phpMyAdmin如何向您显示执行查询所需的时间 if(strideList.size() == 10) { } 或 您应该使用list.size(),因为这清楚地显示了您的意图。另一段代码实际上是错误的,如果列表有20个元素呢移动列表。获取(9)!=null只检查第九个元素是否与null不同 至于检查函数的速度,您可以使用计时器计算从函数

我需要知道我的arraylist是否有10个插槽。调用大小是更快的函数,还是像调用第10个索引一样更快?还有什么方法可以让我检查某些功能的速度吗?有点像phpMyAdmin如何向您显示执行查询所需的时间

if(strideList.size() == 10)
{

}


您应该使用
list.size()
,因为这清楚地显示了您的意图。另一段代码实际上是错误的,如果列表有20个元素呢<代码>移动列表。获取(9)!=null只检查第九个元素是否与
null
不同


至于检查函数的速度,您可以使用计时器计算从函数开始到结束的时间量,或者使用称为探查器的特殊软件查看应用程序中哪些函数/代码路径较慢。

您应该使用
list.size()
,因为这清楚地显示了您的意图。另一段代码实际上是错误的,如果列表有20个元素呢<代码>移动列表。获取(9)!=null只检查第九个元素是否与
null
不同

至于检查函数的速度,您可以使用计时器来计算从函数开始到结束所经过的时间量,或者使用称为探查器的特殊软件来查看应用程序中哪些函数/代码路径较慢。

基于(其他
列表
实现将类似),
size()
仅从对象返回一个
int
成员变量<但是,code>get()执行范围检查,执行3或4个开销函数,然后执行阵列访问,这将占用更多的处理能力

使用
size()

(另外,如上所述,
size()
)更易于阅读。

基于(其他
列表
实现将类似),
size()
仅从对象返回一个
int
成员变量<但是,code>get()执行范围检查,执行3或4个开销函数,然后执行阵列访问,这将占用更多的处理能力

使用
size()

(另外,如前所述,使用
size()
)更具可读性)

StradList.get(9)将抛出
IndexOutOfBoundsException
,并且将比
list.size()
花费更多的时间 但是需要注意的是
get(int index)
的代码。其中包括两个步骤 1.rangeCheck,它正好与您从
size()中获取的大小相匹配
2.如果范围大于大小,则抛出异常,这是额外花费的时间
3.如果大小不大于大小,则它将从数组中获取。
ArrayList的代码:

    public E get(int index) {
    382           rangeCheck(index);
    383   
    384           return elementData(index);
    385       }

  private void rangeCheck(int index) {
   603           if (index >= size)
   604               throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
   605       }
   606   


     E elementData(int index) {
      371           return (E) elementData[index];
      372       }
      373   
StradList.get(9)将抛出一个
IndexOutOfBoundsException
,并且比
list.size()
但是需要注意的是
get(int index)
的代码。其中包括两个步骤 1.rangeCheck,它正好与您从
size()中获取的大小相匹配
2.如果范围大于大小,则抛出异常,这是额外花费的时间
3.如果大小不大于大小,则它将从数组中获取。
ArrayList的代码:

    public E get(int index) {
    382           rangeCheck(index);
    383   
    384           return elementData(index);
    385       }

  private void rangeCheck(int index) {
   603           if (index >= size)
   604               throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
   605       }
   606   


     E elementData(int index) {
      371           return (E) elementData[index];
      372       }
      373   

出于好奇,我认为这是相关的,为什么尽快进行尺寸检查如此重要?此外,为了获得速度增益,为什么值得牺牲确保尺寸正好为10的能力?我认为这是出于好奇,为什么尽快进行尺寸检查如此重要?此外,为什么为了获得速度增益而牺牲确保大小正好为10的能力是值得的?列表中不可能有超过10个元素。我在循环中填充列表。知道这一点后,后者将是最好的选择吗?不,我仍然会使用更容易阅读的版本
size
。在知道这一部分是瓶颈之前,不要担心优化代码。让它工作,然后让它可读,然后如果它没有足够快的作业优化。没有办法列表可以有超过10个元素。我在循环中填充列表。知道这一点后,后者将是最好的选择吗?不,我仍然会使用更容易阅读的版本
size
。在知道这一部分是瓶颈之前,不要担心优化代码。让它工作,然后让它可读,然后如果它没有足够快的工作优化。谢谢。我甚至没想到索引会超出范围!“我甚至不认为索引超出范围!”-如果你不知道方法的作用,你应该阅读javadocs。谢谢。我甚至没想到索引会超出范围!“我甚至不认为索引超出了范围!”-如果你不知道方法的作用,你应该阅读javadocs。