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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 最新、最全、最准确的手机号正则表达式

    最新、最全、最准确的手机号正则表达式更新到2018年1月,支持最新的166号段/***手机号码正则表达式*/privatestaticfinalStringPHONE_NUMBER_REG="^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\\d{8}$";

    2022年6月14日
    31
  • 团队项目总结[通俗易懂]

    团队项目总结[通俗易懂]设想和目标1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?我们的软件要解决的就是让学生们可以自由的处理他们不想要但并未失去价值的东西;并且对典型用户和典型场景

    2022年7月2日
    25
  • UE4 slate_ue4渲染动画

    UE4 slate_ue4渲染动画原创文章,转载请注明出处。点击观看下一篇《UE4Slate二用UMG思想去理解Slate》这里写目录标题前言Slate是什么?为什么要了解Slate?提前需要了解的模块(将对Slate学习很有帮助)前言Slate相关文章,使用引擎版本4.25.4源码版.一共11篇文章。网上Slate的文章介绍很少,所以在这里做一下该部分的文章并记录一下。同时也希望能帮助到大家。Slate是什么?一套GUI架构,它是虚幻引擎的UI架构。我们打开编辑器看到的界面,可以说95%以上(高概猜测数值,甚至100.

    2022年10月4日
    5
  • glib和glibc_libc.so.6 version GLIBC_2.14

    glib和glibc_libc.so.6 version GLIBC_2.14转自:http://blog.csdn.net/yasi_xi/article/details/9899599【glibc和libc】glibc和libc都是Linux下的C函数库。

    2022年8月3日
    6
  • dism失败 ox800f0818_Win 10 DISM 一直失败,错误: 0x8000ffff – Microsoft Community[通俗易懂]

    dism失败 ox800f0818_Win 10 DISM 一直失败,错误: 0x8000ffff – Microsoft Community[通俗易懂]你好!了解到您的问题。在使用RestoreHealth命令时是需要在检测出系统出现问题且映像文件可修复的情况下才能使用;Dism/Online/Cleanup-Image/ScanHealth这条命令将扫描全部系统文件并和官方系统文件对比,扫描计算机中的不一致情况。Dism/Online/Cleanup-Image/CheckHealth这条命令必须在前一条命令执行完以后,发现系统文件…

    2022年9月24日
    3
  • 利用Cinemachine实现相机不穿墙效果

    利用Cinemachine实现相机不穿墙效果以前一直都是代码控制,今天看见了这个插件,真的很好用,下面我们来看看,本人用的2018.1.7版本:首先呢,导入我们想用的资源点击上头编辑,选择CreatVirtualCamera拖进去Sphere,相机会跟随并且看向他点击这个按钮,可以给相机添加很多东西,这里说碰撞体Collider这是添加后多出来的组件这时候,如果后面有一堵墙,相机不会再往后靠…

    2022年5月28日
    35

发表回复

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

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