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. 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭)

    卷 backup 的文件夹 PATH 列表卷序列号为 00000025 D4A8:14B0J:.│  1.txt│  c语言经典案例效果图示.doc│  ├─1传智播客_尹成_C语言从菜鸟到高手_第一 ...

  2. php-Mysql示例1

  3. 移动存储卡仍然用FAT32文件系统的真相

    微软在2001年就为自家的XP系统的本地磁盘默认使用了NTFS文件系统,但是12年之后,市面上的USB可移动设备和SD卡等外置存储器仍然在用着FAT32文件格式,这是什么理由让硬件厂商选择过时的文件系 ...

  4. Linux学习笔记20——第一个多线程程序

    一 什么是线程 线程:是一个进程内部的一个控制序列. 二 使用POSIX的注意点 1 为了使用线程函数库,必须定义宏_REENTRANT,通过定义_REENTRANT来告诉编译器我们需要可重入功能,可 ...

  5. 使用Jquery解析Json基础知识(转)

    在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换.JSON数据的解析是关键. 先明 ...

  6. 冒泡排序原理(BubbleSorted)

    //简单的冒泡排序public class BubbleMath { public static void main(String[] args) { //分清楚数组的头和尾,开始为尾,最后为头,因为 ...

  7. effective C++ 读后笔记

    首先不得不说侯捷翻译的书大部分我都很喜欢,因为侯捷本身是一名出色的C++技术专家.这本书讲的是C++如何高效的运行,我想要成为一名卓越的开发人员,代码的高效性是必不可少的.很多人的代码质量很差,即使能 ...

  8. zoj 2100 Seeding

    Seeding Time Limit: 2 Seconds      Memory Limit: 65536 KB It is spring time and farmers have to plan ...

  9. IOS性能调优系列:Analyze静态分析

    目前关于IOS性能优化的教程较少,决定写一个<IOS性能调优系列>,主要关注与内存泄漏.性能优化.流量和电量分析几个方面. XCode已经提供了非常强大的性能调优工具,结合几个第三方工具和 ...

  10. 字符串、十六进制、byte数组互转

    import java.io.ByteArrayOutputStream; public class HexUtil { /** * @param args */ public static void ...