在android开发中仅仅要是列表式风格界面我们差点儿都须要用到List来存放数据,在数量非常少的List的话差点儿不论什么一种循环遍历方式总体性能都无区别。可是当我们遇到数据量稍大的时候有必要考虑用哪种方式写起来比較高性能。

常见的有下面三种:

第一种

for (String s : tests) {
// ....
}

另外一种

int size = tests.size();
for (int i = 0; i < size; i++) {
tests.get(i);
}

第三种

Iterator<String> it = tests.iterator();
while(it.hasNext()) {
it.next();
}

採用以上三种在数据量少于等于100的情况下差点儿输出时间都为0,当在1000左右的时候第三种略微慢在1ms左右<可能在当时的环境原因>能够说三种方式也是没区别,当数据量在10000左右我们就能看到区别了第一种和第三种差点儿相同要4ms而另外一种仅仅要2ms,当数据量在100000左右的话第一种差点儿相同要40ms,另外一种17ms,第三种33ms。

声明:以上环境在MacBook Pro -> Eclipse -> Android5.0 -> Nexus5手机环境下的測试结果,Google下面资料显示在非JIT的情况下事实上第一种是最快的,可是在Android环境下还是採用另外一种才是最佳性能选择。

Android中List循环遍历性能对照的更多相关文章

  1. android中无限循环滑动的gallery实例

    android中无限循环滑动的gallery实例 1.点击图片有变暗的效果,使用imageview.setAlpha(),并且添加ontouchListener public void init() ...

  2. Android中RelativeLayout和LinearLayout性能分析

    先看一些现象吧:用eclipse或者Android studio,新建一个Activity自动生成的布局文件都是RelativeLayout,或许你会认为这是IDE的默认设置问题,其实不然,这是由 a ...

  3. php中的循环遍历 foreach list each

    foreach语句遍历数组foreach语句用于循环遍历数组,每进行一次循环,当前数组元素的值就会被赋值给变量value(也可以是其它变量),数组指针会逐一的移动. 代码示例: foreach($ar ...

  4. Android中数据库Sqlite的性能优化

    1.索引简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率.(1). 优点大大加快了数据库检索的速度,包括 ...

  5. Java中ArrayList循环遍历并删除元素的陷阱

    ava中的ArrayList循环遍历并且删除元素时经常不小心掉坑里,昨天又碰到了,感觉有必要单独写篇文章记一下. 先写个测试代码: import java.util.ArrayList; public ...

  6. sqlserver中的循环遍历(普通循环和游标循环)

    sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student

  7. sqlserver中的循环遍历(普通循环和游标循环)(转载)

    sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student

  8. 微信小程序中的循环遍历问题

    比如:如果在微信小程序中要遍历输出 0-9 的数,我们会使用for循环 ;i<;i++){ console.log(i); } 确实结果也是这样: 但是,如果我在循环时同时调用wx的api接口1 ...

  9. Mybatis中使用循环遍历

    Mybatis中传参数的方法 1.使用注解绑定,mapper.xml 对应方法 不需要指定 parameterType,(推荐使用注解绑定方式) 方法接口: List<CalculateIdea ...

随机推荐

  1. 数据库索引实现原理—B_TREE

    数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询.更新数据库表中数据.索引的实现通常使用B_TREE.B_TREE索引加速了数据访问,因为存储引擎不会再去扫描整张表得到需要的数据:相反 ...

  2. Implement Trie (Prefix Tree) - LeetCode

    Implement a trie with insert, search, and startsWith methods. Note:You may assume that all inputs ar ...

  3. OBS插件开发以及OBS插件的选择(obs直播插件)研究思路

    obs版本的选择: 工作室版,优化了很多东西,缺点是不能用插件,在部分机型不稳定,因为更新的很频繁.不过这个插件不能用的说法还是停留在早起,截至到今天已经完美支持,所以在不久的将来会越来越好,如果是开 ...

  4. 聊聊、Zookeeper 客户端 Curator

    [Curator]   和 ZkClient 一样,Curator 也是开源客户端,Curator 是 Netflix 公司开源的一套框架. <dependency> <groupI ...

  5. Assembly.CreateInstance和Activator.CreateInstance

    本来是在设计模式中的工厂方法,在实现抽象工厂时,用到了一直都不熟悉的反射. namespace Factory { public abstract class Factory { public abs ...

  6. HDU1087上升子序列的最大和

     解法一 此题是一个简单的动态规划问题,用dp[i]记做最后一步经过第i个数所得到的最大sum值,则结果=max(dp[i]),i=1,...n.考虑dp[i]的前一步会经过那里?假设dp[i]的前一 ...

  7. sublime的markdown插件

    mac安装 shift+command+p调出package control面板,搜索install调查安装软件搜索面板 搜索需要安装markdown软件 我安装了下面两个:MarkdownLiveP ...

  8. struts2中迭代的使用方法

    struts2  Html代码   <s:iterator value="resultList" id="user" status="st&qu ...

  9. DB2 SQL Error: SQLCODE=-805, SQLSTATE=51002 解决方法

    在操作大量数据时如果发生这种错误,说明不是db2 使用的 package没有绑定,而是 因为资源未释放,导致可以使用此package的资源不足,致使不能连接资源. 在程序中,对PreparedStat ...

  10. java怎样将一个List传入Oracle存储过程

    java怎样将一个List传入Oracle存储过程.样例例如以下: 数据库端建一个PL/SQL的数组. CREATE OR REPLACE TYPE tables_array AS VARRAY(10 ...