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. bzoj1706

    倍增好题,f[p,i,j]表示i到j经过了2^p条边走过的最短路径显然f[p+1]可以由f[p]转移来然后对n二进制拆分累加即可 ; ..,..] of int64; f,pf:..] of int6 ...

  2. Linux Kernel 'perf_event.c'本地权限提升漏洞

    漏洞版本: Linux Kernel 3.11-rc4 漏洞描述: Linux Kernel是一款开源的操作系统 Linux Kernel 'perf_event.c'存在一个安全漏洞,允许本地攻击者 ...

  3. RAM和DDR

    DDR内存现在渐渐成为内存市场中新的宠儿,因其合理的性价比从其诞生以来一直受到人们热烈的期望,希望这一新的内存产品全面提升系统的处理速度和带宽,就连对Rambus抱有无限希望的Intel公司也向外界宣 ...

  4. mahout算法源码分析之Collaborative Filtering with ALS-WR拓展篇

    Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 额,好吧,心头的一块石头总算是放下了.关于Collaborative Filtering with AL ...

  5. 关于我们的Jquery操作下拉列表和复选框,自定义下拉

    后半部分还有自定义下拉列表和开灯关灯的效果,可以进来来看一下 哦 如果网页有下拉列表和复选框,看一下Jquery怎么来操作他们,主要怎么来选取他们的数据,怎么设置某一项选中 先来看个下拉列表 < ...

  6. winform datagridview如何获取索引 分类: DataGridView 2014-04-11 13:42 216人阅读 评论(0) 收藏

    datagridview.CurrentCell.RowIndex;            是当前活动的单元格的行的索引 datagridview.SelectedRows  ;           ...

  7. ng-if与ng-show、ng-hide指令的区别和注意事项

    http://blog.csdn.net/aitangyong/article/details/44701769

  8. CSS3弹性盒模型之Flexbox是布局模块box-sizing & box-orient & box-direction & box-ordinal-group

    css3 box-sizing属性 box-sizing属性可以为三个值之一:content-box(default),border-box,padding-box. content-box,bord ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(43)-工作流设计-字段分类设计

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(43)-工作流设计-字段分类设计 系列目录 建立好42节的表之后,每个字段英文表示都是有意义的说明.先建立 ...

  10. libcurl 使用的几个注意事项

    注:libcurl 入门指南( the tutorial ): http://curl.haxx.se/libcurl/c/libcurl-tutorial.html 0. 为使用的curl url ...