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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈家明 中级黑马   /  2012-11-7 19:21  /  1479 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test {

        public static void main(String[] args) {
                List<String> list = new ArrayList<String>();
                list.add("aa");
                list.add("bb");
                list.add("cc");
                //迭代器
                Iterator<String> it = list.iterator();
                while(it.hasNext()){
                        String value = it.next();
                        System.out.println(value);
                }
                //增强for
                for(String s : list){
                        System.out.println(s);
                }
        }
}
迭代器和增强for循环都能实现取出对象操作,它们可以等价吗?各有什么优劣性?区别在哪?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

2 个回复

倒序浏览
迭代器的优点:在迭代的同时可以简单的操作数据,比如删除对象等
缺点:效率偏低

增强for循环优点:效率很高,查询速度快,操作简单
缺点:无法对集合进行简单操作

推荐使用增强for循环,一句话:谁用谁知道!~

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素。在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素。
迭 代器需要保留上一次成功调用的状态和下一次成功调用的状态,也就是他知道来自于哪里和将要前往哪里。闭包提供的机制可以很容易实现这个任务。记住:闭包是 一个内部函数,它可以访问一个或者多个外部函数的外部局部变量。每次闭包的成功调用后这些外部局部变量都保存他们的值(状态)。当然如果要创建一个闭包必 须要创建其外部局部变量。迭代器有一个缺点:每次调用都需要创建一个闭包,大多数情况下这种做法都没什么问题,然而在有些情况下创建闭包的代价是不能忍受的。在这些情况下我们可以使用范性for本身来保存迭代的状态。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马