我是靠谱客的博主 忧虑寒风,最近开发中收集的这篇文章主要介绍关于 for循环和Iterator遍历,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

public static void main(String[] args) {
long start,end,forStart,forEnd;
ArrayList<Integer> al=newArrayList<Integer>();
for(int i=0;i<900000;i++){
al.add(new Integer(4));
}

forStart=System.currentTimeMillis();
for(int j=0;j<al.size();j++){
al.get(j);
}
forEnd=System.currentTimeMillis();

Iterator<Integer>it=al.iterator();
start=System.currentTimeMillis();
while(it.hasNext()){
it.next();
}
end=System.currentTimeMillis();

System.out.println("for用时:"+(forEnd-forStart)+"nIterator用时:"+(end-start));
}

从上述来看,则是for循环更快些,但是如果将测试的ArrayList替换成LinkedList,再来执行一遍相同的代码,将会得到惊讶的结果:for循环的效率实在是太低了,让人都没有耐心等程序执行完成了。上种情况的出现for比iterator快,是因为对于ArrayList索引直接取值快,随机访问速度是ArrayList的优势所在。
综上所述,还是尽量提倡用iterator来遍历集合效果会更加好点。
-------------------------------------------------
今天做了I09项目的一段程序,期间用到Iterator遍历,后考虑到代码的简介性,换做for循环去写.竟然发现原本在Iterator下跑出的程序换做for 竟然java.lang.OutOfMemoryError.
大概数据条数124万.
 try {
            PolicyCleanSav p = new PolicyCleanSav();
            Iterator it = p.getAllPolicyCleanSav();
            while (it.hasNext()) {
                I09PolicyCleanSavI temp = (I09PolicyCleanSavI) it.next();
                System.out.println(temp.getInsured());
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
       /*
        try {
            PolicyCleanSav p = new PolicyCleanSav();
            List<I09PolicyCleanSavI> l = p.getAllPolicyCleanSavList();
            for(I09PolicyCleanSavI temp:l){
                System.out.println(temp.getPolicyholder());
            }
       
      //      for(int i=0;i<=l.size();i++){
      //          System.out.println(l.get(i).getPolicyholder());
       //     }

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }  */
当在网上看到这段资料"关键就在于 it产生时,游标的位置在list集合里的第一个对象之前,所以取第一个对象要先it.next()。"
顿悟,作为Iterator他的操作对象是getAllPolicyCleanSav()的游标;且为逐行装载,处理完后.
通俗上可以理解为索引.
但是 List<I09PolicyCleanSavI> l = p.getAllPolicyCleanSavList();
            for(I09PolicyCleanSavI temp:l){
他的操作对象是从数据库中取出的结果集,相比之下,首先将结果集装载到jvm中去.自然jvm消耗较大.
所以如果不涉及crud操作.大数据情况下还是Iterator

最后

以上就是忧虑寒风为你收集整理的关于 for循环和Iterator遍历的全部内容,希望文章能够帮你解决关于 for循环和Iterator遍历所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部