for iterator做迭代循环性能最好 然后是foreach 然后是提前声明好变量的for循环 最后是每次都要计算集合size的for
 
 

 
package test;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
 
/**
 * 性能测试
 * @author LinSir
 *
 */
public class PerformanceTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
        Map<String, Object> map=new HashMap<String, Object>();
        map.put("name", "jams");
        map.put("sex", true);
        map.put("age", 17);
        for (int i = 0; i <100000; i++) {
            list.add(map);
        }
        System.out.println("第一种起始时间:");
        long a11=System.currentTimeMillis();
        long a1=System.nanoTime();
        for (int i = 0; i < list.size(); i++) {
            list.get(i).get("name");
            list.get(i).get("sex");
            list.get(i).get("age");
            /*list.get(i).put("a", 999);
            list.get(i).remove("sex");*/
        }
        long a2=System.nanoTime();
        long a22=System.currentTimeMillis();
        System.out.println("第一种纳秒差:"+(a2-a1));
        System.out.println("第一种毫秒差:"+(a22-a11));
        System.out.println("-----------------------------");
        System.out.println("第二种起始时间:");
        long b11=System.currentTimeMillis();
        long b1=System.nanoTime();
        for (Map<String, Object> map2 : list) {
            map2.get("name");
            map2.get("sex");
            map2.get("age");
            /*map2.put("a", 999);
            map2.remove("sex");*/
        }
        long b2=System.nanoTime();
        long b22=System.currentTimeMillis();
        System.out.println("第2种纳秒差:"+(b2-b1));
        System.out.println("第2种毫秒差:"+(b22-b11));
        System.out.println("-----------------------------");
        System.out.println("第3种起始时间:");
        long c11=System.currentTimeMillis();
        long c1=System.nanoTime();
        for (Iterator<Map<String, Object>> iterator = list.iterator(); iterator.hasNext();) {
            Map<String, Object> map2 = (Map<String, Object>) iterator.next();
            map2.get("name");
            map2.get("sex");
            map2.get("age");
            /*map2.put("a", 999);
            map2.remove("sex");*/
        }
        long c2=System.nanoTime();
        long c22=System.currentTimeMillis();
        System.out.println("第3种纳秒差:"+(c2-c1));
        System.out.println("第3种毫秒差:"+(c22-c11));
        System.out.println("-----------------------------");
        System.out.println("第4种起始时间:");
        long d11=System.currentTimeMillis();
        long d1=System.nanoTime();
        int  listSize=list.size();
        for (int i = 0; i < listSize; i++) {
            list.get(i).get("name");
            list.get(i).get("sex");
            list.get(i).get("age");
            /*list.get(i).put("a", 999);
            list.get(i).remove("sex");*/
        }
        long d2=System.nanoTime();
        long d22=System.currentTimeMillis();
        System.out.println("第4种纳秒差:"+(d2-d1));
        System.out.println("第4种毫秒差:"+(d22-d11));
        System.out.println("-----------------------------");
 
    }
 
}

//依照以上耗时来判断for iterator性能大于foreach大于for循环

Java循环性能随笔的更多相关文章

  1. Java基础 随笔整理

    Java基础随笔整理 为了方便阅读,特整理了相关的学习笔记 Java感想 操千曲而后晓声 Java入门 Java其他 Java虚拟机详解 语言入门百题 Java开发工具 · Eclipse Java语 ...

  2. (。・・)ノ~个人java学习随笔记录

    基本认识 1.编程思维 根据这几天的java学习,编写程序最重要的就是要有一个清晰的思路.语法上的错误可以跟随着不断的联系与学习来弥补,清晰的思维却只有自己来前期模仿,后面慢慢摸索形成一套属于自己的思 ...

  3. JAVA 学习随笔 : JDK Enhancement Process JEP process

    是时候寻找一个学习JAVA的路径了 ---- JDK Enhancement Process Oracle发布了JDK增强提案与路线图进程,目的在于鼓励OpenJDK提交者贡献点子和扩展以改进Open ...

  4. JAVA 多线程随笔 (三) 多线程用到的并发容器 (ConcurrentHashMap,CopyOnWriteArrayList, CopyOnWriteArraySet)

    1.引言 在多线程的环境中,如果想要使用容器类,就需要注意所使用的容器类是否是线程安全的.在最早开始,人们一般都在使用同步容器(Vector,HashTable),其基本的原理,就是针对容器的每一个操 ...

  5. Java冒泡随笔

    package homework; import java.util.Scanner; public class ArraySort { /** * @param args */ public sta ...

  6. Java初学随笔

    背景 狡兔三窟,在使用了近7-8年的C#后,考虑到云化的到来,还是要面向更多的语言与技术,近期决定学习scala,先从Java为跳板,最后达到学会并熟练 使用scala的目的. <核心技术> ...

  7. JAVA GUI随笔

    Java的布局管理器提供了一种层面的抽象,自动将用户界面映射到所有的窗口系统.GUI组件放置在容器中,它们的位置由容器的布局管理器来管理. 布局管理器是使用布局管理器类创建的. 注:同一个对象无论添加 ...

  8. Java学习随笔5:Java多线程编程

    1. 线程是程序中单独顺序的控制流,线程本身依靠程序进行运行,线程是程序中的顺序控制流,只能使用分配给程序的资源和环境. 2. 进程是执行中的程序,一个进程可以包含一个或多个线程,但至少要包含一个线程 ...

  9. Java学习随笔4:Java的IO操作

    1. IO流的作用是读写设备上的数据,如硬盘文件.内存.键盘.网络等.根据数据走向,可分为:输入流和输出流:根据处理的数据类型,可分为:字节流和字符流.字节流可以处理所有类型的数据,如MP3.图片.视 ...

随机推荐

  1. MySQL数据表修复, 如何修复MySQL数据库(MyISAM / InnoDB)

    常用的Mysql数据库修复方法有下面3种: 1. mysql原生SQL命令: repair 即执行REPAIR TABLE SQL语句 语法:REPAIR TABLE tablename[,table ...

  2. 【ajax】reqwest

    ded / reqwest All over again. Includes support for xmlHttpRequest, JSONP, CORS, and CommonJS Promise ...

  3. u-boot中分区和内核MTD分区关系

    一.u-boot中环境变量与uImage中MTD的分区关系 分区只是内核的概念,就是说A-B地址放内核,C-D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等. 一般我们只需要分3-4 ...

  4. Unity Skin Shader Optimized

    Shader "Skin Shader" { Properties { _MainTex ("Diffuse (RGB)", 2D) = "white ...

  5. JavaScript高级程序设计11.pdf

    与操作字符串有关的最后一个方法是localeCompare(),这个方法比较两个字符串,按照字符串的字母表中的位置分别返回-1,0,1 var stringValue="yellow&quo ...

  6. Nova 无法向虚机注入密钥

    欢迎各位关注我的博客:http://weibo.com/u/216633637 废话开头: 之前参考这位同学的博客http://www.cnblogs.com/awy-blog/p/3447176.h ...

  7. Scrapinghub | Professional Services

    VShell破解版 VShell破解版 Scrapinghub | Professional Services OUR PROFESSIONAL SERVICES INCLUDE

  8. MySQL Server类型之MySQL客户端工具的下载、安装和使用

    本博文的主要内容有 .MySQL Server 5.5系列的下载 .MySQL Server 5.5系列的安装 .MySQL Server 5.5系列的使用 .MySQL Server 5.5系列的卸 ...

  9. 长沙Uber优步司机奖励政策(1月25日~1月31日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  10. 【转】CPU调度

    转自:http://blog.csdn.net/xiazdong/article/details/6280345 CPU调度   用于多道程序 以下先讨论对于单CPU的调度问题. 回顾多道程序,同时把 ...