增强for

内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。

格式:

for(元素的数据类型  变量 : Collection集合or数组){

}

它用于遍历Collection和数组。通常只进行遍历元素,不要在遍历的过程中对集合元素进行增删操作。

* foreach:增强for循环,一般用于遍历集合或者数组

* 格式:

* for(元素的类型 变量 : 集合或者数组对象) {

* 可以直接使用变量;

* }

注意:在增强for循环中不能修改集合,否则会出现并发修改异常。

foreach比迭代器遍历集合的优势在于代码更加的简洁,更不容易出错,不用关心下标的起始值和终止值。

迭代器

1. Iterator专门用于对集合进行遍历使用的

* 2. 哪些集合可以使用迭代器进行遍历?

*      Collection: 可以

*      List: 可以

*      Set: 可以

*      Map: 不可以*  Map-->Set

//使用迭代器遍历ArrayList集合
Iterator<String> listIt = list.iterator();
21 while(listIt.hasNext()){
22 System.out.println(listIt.hasNext());
23 }
24 //使用迭代器遍历Set集合
25 Iterator<String> setIt = set.iterator();
26 while(setIt.hasNext()){
27 System.out.println(listIt.hasNext());
28 }
29 //使用迭代器遍历LinkedList集合
30 Iterator<String> linkIt = linkList.iterator();
31 while(linkIt.hasNext()){
32 System.out.println(listIt.hasNext());
33 }
void remove();//移除元素 }

1. Iterator专门用于对集合进行遍历使用的

* 2. 哪些集合可以使用迭代器进行遍历?

*      Collection: 可以

*      List: 可以

*      Set: 可以

*      Map: 不可以*  Map-->Set

* 3. Iterator , 是一个接口, 调用itertator()可以得到该接口类型的对象

*   在集合定义中, 有实现了Iterator接口的内部类的集合, 可以使用迭代器

*   实现了Iterable接口的集合可以使用迭代器进行遍历

*

* 4. Iterator: 接口, 迭代器, 用于对集合(Collection)进行遍历

*    Iterable: 接口, 有一个抽象方法叫iterator(), 返回结果是一个Iterator对象(前提是在集合中定义了内部类, 该类实现了Iterator接口)

*    iterator(): 源头是Iterable接口, 返回一个迭代器对象

*

* 5. foreach, 增强for循环, jdk1.5之后可以使用

*      foreach循环底层使用了迭代器的方式

*

* 6. foreach和迭代器Iterator的区别

*      foreach可以遍历数组, 迭代器不能遍历数组;

*

* 7. 迭代器中的方法

*   hasNext(): 用于判断迭代器中是否还有下一个元素, 有返回true, 没有返回false

*   next(): 用于获取下一个元素

*   remove(): 删除元素

*      前提是必须先调用next方法, 而且remove方法只能在next方法后被调用一次, 否则, 抛出异常: IllegalStateException

*   统一个迭代器只能被使用一次, 使用一次之后, 指针已经指向末尾了, 再调用hasNext方法时, 返回false

迭代器和增强for的更多相关文章

  1. Java集合、Iterator迭代器和增强for循环整理

    集合 集合,集合是java中提供的一种容器,可以用来存储多个数据. 数组的长度是固定的.集合的长度是可变的.集合中存储的元素必须是引用类型数据 1.1      ArrayList集合存储元素 pac ...

  2. day06(Collection,List,ArrayList,LinkedList,iterator迭代器,增强for)

    Collection   接口    方法实现 boolean  add(Object o);//添加 boolean  remove(Object o);//移除 修改方法   让实现类自己去实现修 ...

  3. 18_集合框架_第18天_集合、Iterator迭代器、增强for循环 、泛型_讲义

    今日内容介绍 1.集合 2.Iterator迭代器 3.增强for循环 4.泛型 01集合使用的回顾 *A:集合使用的回顾 *a.ArrayList集合存储5个int类型元素 public stati ...

  4. 集合、迭代器、增强for循环、泛型

    1集合 集合是java中提供的一种容器,可以用来存储多个数据. 数组的长度是固定的.集合的长度是可变的.集合中存储的元素必须是引用类型数据. 1.1ArrayList集合存储元素(复习) 例: pub ...

  5. java基础(18):集合、Iterator迭代器、增强for循环、泛型

    1. 集合 1.1 集合介绍 集合,集合是java中提供的一种容器,可以用来存储多个数据. 在前面的学习中,我们知道数据多了,可以使用数组存放或者使用ArrayList集合进行存放数据.那么,集合和数 ...

  6. 迭代器和增强for循环

    iterator 迭代:即Collection集合元素的通过获取方法,在获取元素之前先要判断集合中有没有元素,如果有就把这个元素取出来,然后在判断,如果还有就再去除卡u,一直把集合中的所有元素全部拿出 ...

  7. [Day18]集合框架Collection、迭代器、增强for循环以及泛型

    1.集合 1.1集合-本身是一个存储的容器 集合类的基本接口是Collection接口,这个接口有两个基本方法 (1)boolean add(E element) 用于向集合中添加元素,如果添加元素确 ...

  8. set集合的遍历(基于迭代器和增强for循环,没有一般的for循环)

    赋:开发项目中见到的代码 Java中Set集合是一个不包含重复元素的Collection,首先我们先看看遍历方法 package com.sort; import java.util.HashSet; ...

  9. java基础第十二篇之集合、增强for循环、迭代器和泛型

    Collection接口中的常用方法: * 所有的子类子接口都是具有的 * 集合的方法:增删改查 * * public boolean add(E e);//添加元素 返回值表示是否添加成功 * pu ...

随机推荐

  1. lesson5rnns-fastai

    32min 如何确定embedding个数即嵌入矩阵容量?:不确定:与文本的字数关系不大,关键是语言的复杂度和需要解决的问题类型 embedding的效果要比one hot编码的效果好

  2. uboot2014.10移植(一)

    最新有点时间,所以想折腾点东西,于是拿起了几年前的TQ2440玩玩,下载了uboot2014.10版本,准备移植到板子上去,没想到折腾环境都折腾了一下午. 1.工具链安装 我的工具链直接用命令安装的: ...

  3. Vue 1组件的使用

    在components新建一个vue组件: <template> <div> <h1>{{ msg }}</h1> </div> </ ...

  4. Mongo 3.6.1版本Sharding集群配置

    Mongo低版本和高版本的sharding集群配置,细节不太一样.目前网上的配置文档大都是针对低版本的.本人在配置3.6.1版本的mongosharding集群的过程中,碰到不少问题,官方文档没有直观 ...

  5. setjmp与longjmp非局部跳转函数的使用

    [root@bogon code]# cat c.c #include<stdio.h> #include<setjmp.h> static jmp_buf env;//定义全 ...

  6. CodeBlocks中去掉下划线的方法

    [问题] 如上图所示,某些字符下面会出现红色下划线,看着挺难受后的,决定想办法去掉. 这是拼写检查插件在作怪,把这个插件屏蔽掉就OK了. [步骤一]点击[插件]下的[管理插件]按钮 [步骤二]点击[管 ...

  7. Unity 5 Game Optimization (Chris Dickinson 著)

    1. Detecting Performance Issues 2. Scripting Strategies 3. The Benefits of Batching 4. Kickstart You ...

  8. git和gulp使用

    git push origin master/chunxiong git remote -v git merge chunxiong working tree:就是你所工作在的目录,每当你在代码中进行 ...

  9. 我发起了一个 .Net 平台上的 直播平台 开源项目 BalaBala

    直播平台, 需要解决的 技术点 是 2 个: 1  直播数据 的 传输 和 在 客户端 的 播放 2  大并发 关于 网络通信, 数据传输, 可以参考 <利用 MessageRPC 和 Shar ...

  10. 我发起了一个 支持 PostgreSql 的 外围设施 的 .Net 开源项目

    目标 :  让 PostgreSql 成为 通用的 跨平台 的 数据库 , 成为 开发者 喜爱 的 利器 . 要做的事 , 当然 , PostgreSql 本身现在不用我们去做什么 . 一个 数据库 ...