java list最优遍历

java list最优遍历

android 官方推荐除了ArrayList,别的collections 使用增强LOOP ,也就是foreach ArrayList 使用手写计数loop without size

以下为官方原文

static class Foo {
    int mSplat;
}

Foo[] mArray = ...

public void zero() {
    int sum = 0;
    for (int i = 0; i < mArray.length; ++i) {
        sum += mArray[i].mSplat;
    }
}

public void one() {
    int sum = 0;
    Foo[] localArray = mArray;
    int len = localArray.length;

    for (int i = 0; i < len; ++i) {
        sum += localArray[i].mSplat;
    }
}

public void two() {
    int sum = 0;
    for (Foo a : mArray) {
        sum += a.mSplat;
    }
}
复制代码

zero() is slowest, because the JIT can’t yet optimize away the cost of getting the array length once for every iteration through the loop.

one() is faster. It pulls everything out into local variables, avoiding the lookups. Only the array length offers a performance benefit.

two() is fastest for devices without a JIT, and indistinguishable from one() for devices with a JIT. It uses the enhanced for loop syntax introduced in version 1.5 of the Java programming language.

So, you should use the enhanced for loop by default, but consider a hand-written counted loop for performance-critical [ArrayList](https://developer.android.google.cn/reference/java/util/ArrayList.html) iteration.

转载于:https://juejin.im/post/5c8755b35188257ddb6afd36

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101056.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oracle创建数据库实例失败_oracle数据库实例名是什么

    oracle创建数据库实例失败_oracle数据库实例名是什么Oracle数据库实例的创建、删除、修改   以SUSE10SP2、Oracle10gR2为例。      本文中的数据库实例这一称谓应该换做数据库更为准确,数据库可以理解为是一个物理的静态概念,主要包括一些物理存在的数据库文件,而数据库实例则是一个动态概念,包括一些内存区域以及若干进程,数据库实例是对数据库进行操作的执行者。(20090714修改)   安装完Ora

    2022年9月22日
    0
  • 虚拟化之vmware-网络

    虚拟化之vmware-网络

    2021年8月29日
    95
  • bz2压缩解压「建议收藏」

    bz2压缩解压「建议收藏」压缩bzip2-zfileName解压bzip2-dfileName.bz2bunzip2fileName压缩成.tar.bz2tar-jcvffileName.tar.bz2fileName解压.tar.bz2tar-jxvffileName.tar.bz2

    2022年6月3日
    37
  • k8s pod同步时区

    k8s pod同步时区

    2021年5月15日
    166
  • MSDP配置(anycast RP)

    MSDP配置(anycast RP)实验拓扑:案例配置需求:1、 设备之间互联的IP如图所示;2、 R1和R2设备互联使用12.1.1.X/24,X表示设备编号,如R1使用12.1.1.1/24,R2使用12.1.1.2/24,其它设备互联同上;3、 AS100内IGP协议运行OSPF协议,AS200内IGP协议运行EIGRP协议;4、 R3和R4配置运行BGP协议,建立EBGP邻居关系;5、 配置组播稀疏模式,其中…

    2022年5月18日
    72
  • django的drf框架的优点_一个类要具有可序列化

    django的drf框架的优点_一个类要具有可序列化前言上一篇文章我们讲述了序列化,这篇就带大家一起来实现以下序列化Serializer我们使用序列化类Serializer,我们来看下源码结构,这里推荐使用pycharm左边导航栏的Structu

    2022年7月31日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号