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. BZOJ2134: 单选错位

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2134 题解:因为每个答案之间是互不影响的,所以我们可以挨个计算. 假设当前在做 i 题目,如果 ...

  2. java 对list进行排序

    前提: list中的元素是自定义对象,如何根据对象的元素进行排序呢? 比如List<Student>students 是一个list,每个元素都是Student对象,Student对象中有 ...

  3. IDEA新建SpringMVC项目报错解决办法

    网页运行的错误: HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoClassDefFoundE ...

  4. 正则表达式中Pattern类、Matcher类和matches()方法简析

    1.简介:  java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.  它包括两个类:Pattern和Matcher . Pattern: 一个Pattern是一 ...

  5. JavaScript实现简单的打印功能

    var printSetup = function(){ // 打印页面设置 wb.execwb(8,1); }; var printPreView = function(){ // 打印页面预览 w ...

  6. 深入理解C#:编程技巧总结(一)

    原创文章,转载请注明出处! 以下总结参阅了:MSDN文档.<C#高级编程>.<C#本质论>.前辈们的博客等资料,如有不正确的地方,请帮忙及时指出!以免误导! 1.实现多态性的两 ...

  7. 11个让你吃惊的Linux终端命令

  8. (转)百度Map API

    转自  http://blog.sina.com.cn/s/blog_6079f38301013sb3.html 一.与地图操作相关的接口哦! (这些接口的开启都是写在执行成功的回调函数那里) map ...

  9. 使用javah生成.h文件, 出现无法访问android.app,Activity的错误的解决

    在工程ndk22/bin/classes中 运行javah  com.cn.ndk22.Ndk22.Activity ,出现了.h文件 我在bin/classes目录中 ,就是无法访问, : 错误:无 ...

  10. Node.js小Httpserver

    须要说明两点: 1 程序文件hello.js需用记事本另存为utf-8格式的hello.js watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamVhcGVk ...