for,foreach,iterator的用法和区别

相同点:   三个都可以用来遍历数组和集合

不同点:1.形式差别 
                 for的形式是
                for(int i=0;i<arr.size();i++){...}

                  foreach的形式是
                for(int i:arr){...}

                  iterator的形式是
               Iterator it = arr.iterator();
               while(it.hasNext()){ object o =it.next(); ...}


                 2.条件差别
                   for需要知道集合或数组的大小,而且需要是有序的,不然无法遍历;
                   foreach和iterator都不需要知道集合或数组的大小,他们都是得到集合内的每个元素然后进行处理;
              
                 3.多态差别
                 for和foreach都需要先知道集合的类型,甚至是集合内元素的类型,即需要访问内部的成员,不能实现态;
                   iterator是一个接口类型,他不关心集合或者数组的类型,而且他还能随时修改和删除集合的元素,举个例                     子:public void display(Iterator<object> it){
                                     while(it.hasNext()){
                                          system.out.print(it.next()+"");
                                     }
                                }           
                             当我们需要遍历不同的集合时,我们只需要传递集合的iterator(如arr.iterator())看懂了吧,这就                         是iterator的好处,他不包含任何有关他所遍历的序列的类型信息,能够将遍历序列的操作与序列底层的                       结构分离。迭代器统一了对容器的访问方式。这也是接口的解耦的最好体现。


                    4.用法差别
                       for循环一般用来处理比较简单的有序的,可预知大小的集合或数组
                       foreach可用于遍历任何集合或数组,而且操作简单易懂,他唯一的不好就是需要了解集合内部类型
                       iterator是最强大的,他可以随时修改或者删除集合内部的元素,并且是在不需要知道元素和集合的类   型的情况下进行的(原因可参考第三点:多态差别),当你需要对不同的容器实现同样的遍历方式时,迭代器是最好的选择!
          转载请注明出处:http://blog.csdn.net/iamkila

转载于:https://www.cnblogs.com/baiduligang/p/4247668.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

和菜鸟一起学linux总线驱动之初识spi驱动主要结构

既然知道了协议了&#xff0c;那么就可以开始去瞧瞧linux kenerl中的spi的驱动代码了&#xff0c;代码中有很多的结构体&#xff0c;还是对主要的结构体先做个了解吧&#xff0c;那样才可以很好的理解驱动。主要是include/linux/spi.h 首先是SPI的主机和从机通信接口&#xff0…

操作系统大内核和微内核_操作系统中的内核

操作系统大内核和微内核A Kernel is the central component of an Operating System. The Kernel is also said to be the heart of the Operating System. It is responsible for managing all the processes, memory, files, etc. The Kernel functions at the lowest level …

《MySQL——锁》

全局锁是什么&#xff1f;全局锁有什么用&#xff1f;全局锁怎么用&#xff1f; 全局锁主要用在逻辑备份过程中&#xff0c;对于InnoDB 引擎的库&#xff0c;使用–single-transaction; MySQL 提供了一个加全局读锁的方法&#xff0c;命令是 Flush tables with read lock (FTW…

搜索引擎Constellio及Google Search Appliances connectors

做搜索产品的时候发现国外一个同类型的产品contellio&#xff0c;发现功能比较强大&#xff0c;先记录下来 貌似可以添加文档 网站 以及数据库等不同类型的数据源 http://wiki.constellio.com/index.php/Main_Page http://www.constellio.com/ http://www.constellio.com htt…

dig下载_DIG的完整形式是什么?

dig下载DIG&#xff1a;副监察长 (DIG: Deputy Inspector General) DIG is an abbreviation of the Deputy Inspector General. It is a high-level position in the Indian Police Service. The officers who already offered service on Senior Superintendent of Police (SS…

分类器是如何做检测的?——CascadeClassifier中的detectMultiScale函数解读

原地址&#xff1a;http://blog.csdn.net/delltdk/article/details/9186875 在进入detectMultiScal函数之前&#xff0c;首先需要对CascadeClassifier做初始化。 1. 初始化——read函数 CascadeClassifier的初始化很简单&#xff1a; cv::CascadeClassifier classifier; cl…

<MySQL>何时使用普通索引,何时使用唯一索引

如果能够保证业务代码不会写入重复数据&#xff0c;就可以继续往下看。 如果业务不能保证&#xff0c;那么必须创建唯一索引。 关于查询能力 普通索引和唯一索引在查询能力上是没有很大差别的。 如&#xff1a;select id from T where k5 1、普通索引查找到满足条件的第一个记…

Web版OutLook,利用POP接收邮件服务器邮件

一直想做一个Web版的OutLook&#xff0c;所以才萌生这个想法&#xff0c;其实以前也接触过这方面的东西。于是上网找了找&#xff0c;漫天的都是Jmail来接收&#xff0c;好吧&#xff0c;既然大家都在用我也就下载下来试试了。 什么&#xff0c;怎么总是报错呢&#xff1f;原来…

abs std::abs_ABS的完整形式是什么?

abs std::absABS&#xff1a;防抱死制动系统 (ABS: Anti-lock Braking System) ABS is an abbreviation of the Anti-lock Braking System. It is a safety anti-skid braking system that is used on a variety of aircraft, automobiles and other land vehicles, such as mo…

ubuntu 使用

shell 命令历史搜索 &#xff1a; ctrl r使能 session 选择界面&#xff1a;安装gnome-session-fallback安装lwqq转载于:https://www.cnblogs.com/JonnyLulu/p/3600263.html

汉字速查使用方法简介

《汉字速查》&#xff08;HanziSearcher&#xff09;是一个支持全汉字字典和词典的检索工具。其界面如下所示。 界面上方为工具栏。 左方为字典和词典检索栏。 右方在启动时显示版权信息和作者的联系方式&#xff0c;在执行检索时&#xff0c;显示检索结果。 检索方法 汉字速查…

android jni示例_Android服务示例

android jni示例A service is a component that runs in the background for supporting different types of operations that are long running. The user is not interacted with these. These perform task even if application is destroyed. Examples include handling of…

《MySQL——选错索引,该如何做》

如果不断地删除历史数据和新增数据&#xff0c;MySQL有时会选错索引。 选择索引是优化器的工作&#xff0c;优化器优化时会考虑的因素&#xff1a;扫描行数、是否需要排序、是否使用临时表 MySQL通过统计索引上的基数&#xff0c;作为索引的区分度。 统计方法时采样统计&#x…

LPWSTR 类型的实参与const.char *类型形参不兼容

CString csPlus; CString csSummand; m_PlusNumber.GetWindowTextW(csPlus); m_Summand.GetWindowTextW(csSummand); int nPlus atoi(csPlus.GetBuffer(0)); //将编辑框文本转换成整数// int nPlus atoi(strcpy(csPlus.GetBuffer(10),"aa")); csPlus.ReleaseBu…

空间换时间,把递归的时间复杂度降低到O(2n)

递归算法的时间复杂度除非只有前两项&#xff0c;否则都不是线性的&#xff0c;并且相当耗费内存。我们用最常见的的fibonacci数列来说明&#xff1a; function fibonacci(n){if( n 0 || n 1){return n;} else {return fibonacci(n - 1) fibonacci(n - 2);} } 这是一种最常见…

scala char_Scala中的Char数据类型

scala charScala Char数据类型 (Scala Char Data Type) Character (char) in Scala is a data type that is equivalent to 16-bit unsigned integer. The character data type stores a single character. It can be an alphabet, numbers, symbols, etc. The character takes…

《MySQL——给长字符串加索引》

对于长字符串&#xff0c;可用如下方式建立索引&#xff1a; &#xff08;1&#xff09;前缀索引 &#xff08;2&#xff09;字符串倒叙前缀索引 &#xff08;3&#xff09;添加hash字段并在hash字段上加索引 &#xff08;4&#xff09;字段拆分&#xff08;一个字段可拆分为两…

[蓝桥杯历届试题] 欧拉与鸡蛋

大数学家欧拉在集市上遇到了本村的两个农妇&#xff0c;每人跨着个空篮子。她们和欧拉打招呼说两人刚刚卖完了所有的鸡蛋。 欧拉随便问&#xff1a;“卖了多少鸡蛋呢&#xff1f;” 不料一个说&#xff1a;“我们两人自己卖自己的&#xff0c;一共卖了150个鸡蛋&#xff0c;虽然…

Python元组练习

Here, we are covering following Python tuple exercises, 在这里&#xff0c;我们将介绍以下Python元组练习 &#xff0c; Creating & printing a tuple 创建和打印元组 Unpacking the tuple into strings 将元组解包成字符串 Create a tuple containing the letters of…

傻瓜教你看清MVC内部执行流程之ViewData数据传输,轻松学MVC--①目了然篇(待续)

1.首先在执行到Controller里面的action(方法)时,执行到最后会调用一个View()-->此方法是Controller的一个方法 源代码: View Code protected internal ViewResult View(){return View(null /* viewName */, null /* masterName */, null /* model */);} 2.然后继续调用自己…