A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 15173139267 中级黑马   /  2015-10-14 23:09  /  597 人查看  /  5 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

package org.newer.arrayListDemo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
* ArrayList遍历和查询效率
* 开始时间:1444834911517
* 结束时间:1444834911633
* 使用迭代器方式遍历所需要的时间:116
* 随机访问,通过索引值去遍历所需要的时间:32
* for循环遍历,所需要的时间:94
这三种方式中,随机访问速率最快。
*/
public class TestDemo1 {

5 个回复

倒序浏览
public class TestDemo1 {
        public static void main(String[] args) {
                /**
                 * ArrayList遍历三种方式
                 * 1.通过迭代器遍历。即通过Iterator去遍历。
                 * 2.通过随机访问,通过索引值去遍历。
                 * 3.通过for循环遍历。
                 */
                ArrayList list = new ArrayList();
                for (int i = 0; i < 1000000; i++) {
                        list.add(i);
                }
                /** 问题一:
                 *  程序读取数据过10亿条的时候会抛出一个问题:java.lang.OutOfMemoryError:Java heap space
                 *         for (long i = 0; i < 1000000000; i++) {
                 *        list.add(i);
                 *        }
                 *
                 *如果在测试的时候可能会用Eclispe
                 *这时候就需要在Eclipse ->run -arguments 中的VM arguments
                 * 中输入-Xms32m -Xmx800m这个参数就可以了。
                 */
       
                /**
                 * 遍历的三种方式,效率谁更加快。
                 */
                //使用迭代器方式遍历
                iteratorMethod(list);
                //随机访问,通过索引值去遍历
                randomAccessMethod(list);
                //for循环遍历
                forMethod(list);
        }
        /**
         * 使用迭代器方式遍历
         */
        public static void iteratorMethod(ArrayList list){
                long startTime;
                long endTime;
                Iterator ite = list.iterator();
                startTime = System.currentTimeMillis();
                while(ite.hasNext()){
                        ite.next();
                }
                endTime = System.currentTimeMillis();
                long interval = endTime - startTime;
                System.out.println("开始时间:"+startTime);
                System.out.println("结束时间:"+endTime);
                System.out.println("使用迭代器方式遍历所需要的时间:"+interval);
        }
       
        /**
         * 随机访问,通过索引值去遍历
         */
        public static void randomAccessMethod(List list){
                long startTime;
                long endTime;
                startTime = System.currentTimeMillis();
                for (int i = 0; i < list.size(); i++) {
                        list.get(i);
                }
                endTime = System.currentTimeMillis();
                long interval = endTime - startTime;
                System.out.println("随机访问,通过索引值去遍历所需要的时间:"+interval);
        }
       
        /**
         * for循环遍历
         */
        public static void forMethod(List list){
                long startTime;
                long endTime;
                Object obj;
                startTime = System.currentTimeMillis();
                for (Object objList : list) {
                        obj = objList;
                }
                endTime = System.currentTimeMillis();
                long interval = endTime - startTime;
                System.out.println("for循环遍历,所需要的时间:"+interval);
        }
}
回复 使用道具 举报
您基础看完了吗?视频看到多少了啊?
回复 使用道具 举报
好高大上  但是没看懂
回复 使用道具 举报
小白表示看不懂
回复 使用道具 举报
学习了。。。。。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马