Iterator接口的概述

/**
* java.util.Iterator接口:选代器(对集合进行遍历)
* 有两个常用的方法
* boolean hasNext()
* 如果仍有元素可以迭代,则返回true。
* 即判断集合中还有没有下ー个元素,有就返回true,没有就返回 false
* E next()
* 返回送代的下一个元素。
* 即取出集合中的下一个元素
* iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象。
* 获取实现类的方式比较特殊Collection接口中有一个方法,叫iterator(),这个方法返回的就是送代器的实现类对象
* Iterator<E> iterator()返回在该collection集合的元素上进行迭代的送代器。
*
* 迭代器的使用步骤(重点):
* 1.使用集合中的方法 iterator()获取送代器的实现类对象,使用Iterator接口接收(多态)
* 2.使用Iterator接口中的方法hasNext来判断还有没有下一个元素
* 3.使用Iterator接口中的方法next来取出集合中的下一个元素
*/

迭代器代码的实现

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Collection; public class Demo01Iterator {
public static void main(String[] args) {
Collection <String> collection = new ArrayList<>(); collection.add("1号");
collection.add("2号");
collection.add("3号");
collection.add("4号");
collection.add("5号"); // 第一步:使用集合中的方法 iterator() 获取送代器的实现类对象
// 第二步:使用Iterator接口接收(多态)
Iterator<String> stringIterator = collection.iterator(); // 第三步:使用Iterator接口中的方法hasNext来判断还有没有下一个元素
while (stringIterator.hasNext()) {
// 第四步:使用Iterator接口中的方法next来取出集合中的下一个元素
System.out.println(
stringIterator.next()
);
} }
}
输出结果:
1号
2号
3号
4号
5号

迭代器的实现原理

new一个集合出来
collection = new ArrayList<>()

假设集合中添加有元素
collection = [一号元素, 二号元素, 三号元素, 四号元素, 五号元素]

集合中的元素对应的索引
Index = [0, 1, 2, 3, 4]

调用iterator方法
collection.iterator()
作用:获取迭代器的实现类对象井且会把指针(索引)指向集合的-1素引

代码说明:
while (stringIterator.hasNext()) {
stringIterator.next()
}
通过Iterator接口的hasNext()方法,判断集合是否还有没有下一个元素
如果有下一个元素,那么就调用Iterator接口的next()方法,取出下一个元素,并且会把指针向后移一位。

就这样,从索引的 -1 位置的下一位索引,开始获取元素,直到获取完全。

Java Collection集合中的iterator方法的更多相关文章

  1. Java容器---Collection接口中的共有方法

    1.Collection 接口 (1)Collection的超级接口是Iterable (2)Collection常用的子对象有:Map.List.Set.Queue. 右图中实现黑框的ArrayLi ...

  2. 遍历Collection集合中的6种方法:

    下面的代码演示了遍历Collection集合的6种方法,注意Collection集合的遍历远不止于增强for循环,和迭代器两种. 代码如下: package com.qls.traverse; imp ...

  3. java.util.Map按照key值合并的value的Collection 集合中。

    用java实现把多个map的内容合并的一个resultMap中 代码大致如下 /**  * @author Shalf  */ public class MapUtil { /** * 把partMa ...

  4. ------------------java collection 集合学习 ----小白学习笔记,,有错,请指出谢谢

    <!doctype html>java对象集合学习记录 figure:first-child { margin-top: -20px; } #write ol, #write ul { p ...

  5. Day07_39_集合中的remove()方法 与 迭代器中的remove()方法

    集合中的remove()方法 与 迭代器中的remove()方法 深入remove()方法 iterator 中的remove()方法 collection 中的remove(Object)方法 注意 ...

  6. Day07_38_集合中的remove()方法

    集合中的remove()方法 remove() 移除集合中的一个指定对象 代码实例 package com.shige.Collection; import java.util.ArrayList; ...

  7. Day07_37_深度剖析集合中的contains()方法

    深度剖析集合中的 contains()方法 contains()方法查找集合中是否包含某个元素 contains() 底层使用的是 equals()方法 当contains()方法拿到一个对象的时候, ...

  8. Java进阶(二十四)Java List集合add与set方法原理简介

    Java List集合add与set方法原理简介 add方法 add方法用于向集合列表中添加对象. 语法1 用于在列表的尾部插入指定元素.如果List集合对象由于调用add方法而发生更改,则返回 tr ...

  9. Java 8 接口中的默认方法与静态方法

    Java 8 接口中的默认方法与静态方法 1. 接口中的默认方法 允许接口中包含具有具体实现的方法,该方法称"默认方法",默认方法使用用 default 关键字修饰. public ...

随机推荐

  1. html5在微信中不允许放大缩小页面

    在头部添加 <meta name="viewport" content="width=device-width, initial-scale=1, maximum- ...

  2. Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.1.3.RELEASE:repackage (repackage)

    解决方案是删除 pom.xml配置的问题 <build> <plugins> <plugin> <groupId>org.springframework ...

  3. H5 网络状态接口

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Vmware虚拟机用户密码忘记了怎么办?

    Vmware虚拟机用户密码忘记了怎么办?   虚拟机Linux上用户密码忘记了怎么办? 今天准备再学习一下linux操作系统,由于之前已经安装过vaware和linux(redhat),所以这次认为不 ...

  5. P1074 彩票摇奖

    题目描述 为了丰富人民群众的生活.支持某些社会公益事业,北塔市设置了一项彩票.该彩票的规则是: (1) 每张彩票上印有 7 个各不相同的号码,且这些号码的取指范围为 1~33. (2) 每次在兑奖前都 ...

  6. Intellij IDEA 如何使用Jrebel热部署

    My Jrebel 已经不再提供免费使用了,或使用破解版Jrebel 或可以移步至 HotSwapAgent,或使用破解的Jrebel. 一个java web项目,在写的过程中我们需要不断调试,如果没 ...

  7. 【u104】组合数

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 组合数C(N, K)表示了N个数字不重复地选取K个作组合的方案数. C(N, K) = N!/(N-M ...

  8. ASP.NET Core 开启后台任务

    本文告诉大家如何通过 Microsoft.Extensions.Hosting.BackgroundService 开启后台任务 实现 BackManagerService 类继承 Backgroun ...

  9. 类(class)和继承

    .继承之前的写法 ↓ ----------------------------------------------------------------------------------------- ...

  10. [板子]用线段树解决ST表问题

    ST表可以参考:http://blog.csdn.net/whistlena/article/details/52191463 简单说就是区间RMQ最值问题. 对解决这种问题,线段树不用用啥啊. 扔一 ...