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. [LeetCode#163] Missing Ranges

    Problem: Given a sorted integer array where the range of elements are [lower, upper] inclusive, retu ...

  2. java 学习连接

    @Repository.@Service.@Controller 和 @Component   注解:http://blog.csdn.net/ye1992/article/details/19971 ...

  3. [Exchange]2个不同域之间互发邮件

    1.互相添加DNS. 不多说,构建信任域也需要这样的 2.DNS中添加Exchange的地址解析. 3.配置Exchange. 在exchange里面添加对方的exchange信息 在Receiver ...

  4. Tomcat绑定多个IP地址 多域名绑定

    http://blog.csdn.net/stevenyanzhi/article/details/6029776 Tomcat绑定多个IP地址 如果一台服务机上有多个IP地址又有多个工程如何一个IP ...

  5. java 新手

    public class hello{ public static void main(String args[]){ int a=23,b=32,c=34; int s=Math.max(a,c); ...

  6. [置顶] Android布局管理器 - 详细解析布局实现

    布局管理器都是以ViewGroup为基类派生出来的; 使用布局管理器可以适配不同手机屏幕的分辨率,尺寸大小; 布局管理器之间的继承关系 : 在上面的UML图中可以看出, 绝对布局 帧布局 网格布局 相 ...

  7. The Boost C++ Libraries

    " ...one of the most highly regarded and expertly designed C++ library projects in the world.&q ...

  8. [ACM] HDU 5025 Saving Tang Monk (状态压缩,BFS)

    Saving Tang Monk Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  9. 使用r2d3的注意事项

    避免使用tspan 样式上display:none无效, visibility:hidden无效,只能使用fill:none或rgba(0,0,0,0) 容器不能起到绘图的层级作用,覆盖顺序由先后顺序 ...

  10. android 09

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...