黑马程序员技术交流社区

标题: 关于集合对象取出操作 [打印本页]

作者: 陈家明    时间: 2012-11-7 19:21
标题: 关于集合对象取出操作
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循环都能实现取出对象操作,它们可以等价吗?各有什么优劣性?区别在哪?

作者: 焦晨光    时间: 2012-11-7 19:25
迭代器的优点:在迭代的同时可以简单的操作数据,比如删除对象等
缺点:效率偏低

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

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





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2