JAVA迭代器详解

1、Interable、Iterator和ListIterator

1)迭代器生成接口Interable,用于生成一个具体迭代器

public interface Iterable<T>{

Interator<T> iterator();

}

2)迭代器接口Iterator,用于遍历集合和移除元素,只能向前移动

      public interface Iterator<T>{

boolean hasNext();     //判断下一个元素是否存在

T next();              //返回下一个元素

void remove();         //移除元素

      }

3)表迭代器ListIterator

(1)继承了Iterator

(2)可以双向移动

(3)只能用于各种List类的访问

(4)可获取当前元素的前后元素的索引

2、Collection的子类(接口)除了List外,都实现了Interable接口,但List的抽象子类AbstractList实现了Interable接口。

3、Collection的子类(接口)都没有实现Iterator接口。但是,Collection的子类重写Interable接口的iterator()方法时,使用匿名内部类的方式实现Iterator接口。例如:

public Interator<T> interator(){

return new Iterator<T>(){

private int index = 0;

public boolean hasNext(){ return indext < size;}  //size为集合元素的个数

public T next(){ return array[index++];}  // array是存放元素的数组

public void remove(){}   //不使用,就不需要实现

}

}

4、JAVA使用迭代器表示容器间的共性,而不是使用Collection。

5、Map及其子类没有实现Interable、Iterator

但是,Map内部生成Collection,从而间接实现Iterable接口和生成Iterator,所以,Map也可以使用迭代器。

6、foreach与迭代器

(1)foreach可用于数组和Collecton的所有对象

(2)foreach可用来遍历集合的原因是:foreach用Iterable在序列中移动。因此,任何实现了Iterable类都可用foreach遍历。

(3)foreach的java形式:for( :)

黑马----JAVA迭代器详解的更多相关文章

  1. java集合详解

    1.java集合框架的层次结构 Collection接口: Set接口: HashSet具体类 LinkedHashSet具体类 TreeSet具体类 List接口:   ArrayList具体类 L ...

  2. Java集合详解3:Iterator,fail-fast机制与比较器

    Java集合详解3:Iterator,fail-fast机制与比较器 今天我们来探索一下LIterator,fail-fast机制与比较器的源码. 具体代码在我的GitHub中可以找到 https:/ ...

  3. Java集合详解7:一文搞清楚HashSet,TreeSet与LinkedHashSet的异同

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

  4. Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

  5. Java集合详解3:一文读懂Iterator,fail-fast机制与比较器

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

  6. Java集合详解2:一文读懂Queue和LinkedList

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

  7. Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理

    本文非常详尽地介绍了Java中的三个集合类 ArrayList,Vector与Stack <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整 ...

  8. Java 集合详解 | 一篇文章解决Java 三大集合

    更好阅读体验:Java 集合详解 | 一篇文章搞定Java 三大集合 好看的皮囊像是一个个容器,有趣的灵魂像是容器里的数据.接下来讲解Java集合数据容器. 文章篇幅有点长,还请耐心阅读.如只是为了解 ...

  9. Java内部类详解

    Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...

随机推荐

  1. CheckLogin

    # encoding: utf-8 # Creator:耿亚月 Creation time:2017-1-1 # Modifier:耿亚月 Modification time:2017-1-2 #fi ...

  2. POJ 2528 Mayor's posters

    Mayor's posters Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Sub ...

  3. 安装 node-sass 的正确姿势

    SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass

  4. 使用nodejs调用微信发送红包

    前置条件:申请微信发送红包的账户及其权限 依赖 blueimg-md5和 xmlreader 库 /common/weixin.js 源码 /** * Created by chent696 on 2 ...

  5. IE9以下 placeholder兼容

    //input placeholder兼容!(function ($, doc, win) { $.fn.placeholder = function () { var i = doc.createE ...

  6. oracle 查看锁死的表,锁死的进程

    select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode f ...

  7. 在 Windows 上安装 Laravel 5.x

    由于工作中要用到 Laravel ,所以在此记录以备忘. 下载并设置 PHP 进入 http://windows.php.net/download/ 下载 PHP 5.5.x 的最新版本.如果你用的是 ...

  8. Excel表格导入数据

    步骤: 1,选择要插入的数据库--右键--任务--导入数据 2,点击下一步,选择数据源,excel文件路径,和版本信息(注:使用2010及以上版本的office,请先将格式转换为03 或07格式的以便 ...

  9. Android studio 项目的layout的文件打开,preview 视图无法显示,提示“no sdk found...”可能原因?

    1.安装android studio后启动,引导新的下载的sdk文件夹,不要默认在c:\users\你的用户名\appdata...下的sdk文件夹. 2.如果已经默认的,重新在settings/pr ...

  10. html图片预览

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...