`
IT_nice
  • 浏览: 8772 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员_迭代器

阅读更多

------- android培训java培训、期待与您交流! ----------

 

迭代器(Iterator)

取出集合中的元素. 

如何取出Collection 集合中的元素. 

toArray(); 只能通过该方法将集合为数组,再遍历数组,取出元素. -> 不专业(面向对象)

如何取出List 集合中的元素

List 集合有角标的,可以通过get(int index) 取出元素

如何取出Set 集合中的元素. 

该集合没有角标,没有get 方法, 只能通过toArray()方法将集合为数组,再遍历数组,取出元素.

在集合体系中缺乏一个统一的取出集合元素的方式...  虽然List 有get 方法,但是不能为集合通用的... 

java集合体系,专业的设计了一个对象, 该对象专业的用于取出集合的元素, 该对象比较特殊,存在于集合的内部... 

将该对象称之为迭代器对象. 

接口:

Iterator  -> 如何成为迭代器... 

public boolean hasNext(); 

检测是否还有元素. 

public Object next();

取出一个元素.  

public void remove();

删除一个元素. 

该接口,定义了迭代器的基本的规范. 只要是一个迭代器,就应该具备这些方法... 

由于每一个集合类,都应该有一个迭代器可用. 在每一个集合类的内部,都存在一个成员内部类实现类该接口. 保证每一个集合类的迭代器对象都可以使用这些方法. 

所谓的迭代器,存在于每一个集合类的内部,成员内部类. 

接口: 

Collection

... 

public Iterator iterator(); -> 获取一个迭代器

迭代器类,是一个私有的成员内部类存在于集合类的内部, 如何有效的获取迭代器对象(私有成员内部类对象), 提供公共的方法获取. 

由于每一个集合类,都应该有一个迭代器可用. 保证每一个集合类都应该具备一个公共的获取迭代器对象的方法... 如何保证? 将方法抽取到集合的顶层接口Collection中. 

注意: 集合类不是直接实现类Iterator 接口, 集合类不是迭代器, 而是在集合类的内部类存在一个私有的成员内部类, 该类才是一个迭代器... 

 

例子:

  package cn.itcast.b_iterator;

 

import java.util.ArrayList;

import java.util.Collection;

import java.util.Iterator;

 

public class IteratorTest {

public static void main(String[] args) {

// test1();

// testRemove();

// 1. 迭代器.

ArrayList list = new ArrayList();

 

// 2. 添加元素.

list.add("jack");

list.add("rose");

list.add("lucy");

 

// 3. 获取迭代器.

Iterator it = list.iterator();

// while (it.hasNext()) {

// System.out.println(it.next());

//

// // 迭代时,同时使用了集合的方法往集合中添加元素...

// list.add("xxx");

// }

}

 

public static void testRemove() {

// 1. 迭代器.

ArrayList list = new ArrayList();

 

// 2. 添加元素.

list.add("jack");

list.add("rose");

list.add("lucy");

// 3.获取迭代器对象. iterator .

Iterator it = list.iterator();

 

// 4. 通过迭代器删除元素.

// 4.1 不能直接调用remove 方法,尝试删除迭代器的元素.IllegalStateException

// 4.2 调用remove 方法之前,先调用next 方法,取出被删除的这个元素,才能使用remove方法.

// System.out.println(it.next());

// it.remove();

// 5. 使用迭代器的remove 方法,删除集合中的所有的元素.

while (it.hasNext()) {

it.next();

it.remove();

}

System.out.println(list);

}

 

public static void test1() {

// 1. 迭代器.

Collection coll = new ArrayList();

 

// 2. 添加元素.

coll.add("jack");

coll.add("rose");

coll.add("lucy");

 

// 3.获取迭代器对象. iterator .

Iterator it = coll.iterator();

 

// 3.1 使用迭代器的方法

// // hasNext 检测集合中是否有元素.

// System.out.println(it.hasNext());

// System.out.println(it.next());

// System.out.println(it.hasNext());

// System.out.println(it.next());

// System.out.println(it.hasNext());

// System.out.println(it.next());

// System.out.println(it.hasNext());

// // 当hasNext 方法为false时,再次调用next方法. 会抛出NoSuchElementException 运行时异常.

// System.out.println(it.next());

 

// 3.2 迭代器的通用使用方式.

while (it.hasNext()) {

System.out.println(it.next());

}

}

}

 

 

分享到:
评论

相关推荐

    01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip

    5. **集合框架**:深入学习ArrayList、LinkedList、HashSet、HashMap等常用集合类的内部实现和操作,以及集合的遍历和迭代器。 6. **输入/输出(IO)流**:讲解FileInputStream、FileOutputStream、BufferedReader...

    黑马程序员_历经5年锤炼(适合初学者入门的Java基础视频)(解压版)

    通过这套《黑马程序员_历经5年锤炼(适合初学者入门的Java基础视频)》,初学者能够系统地学习Java的基础知识,为后续深入学习和实战打下坚实的基础。Java作为一种强大的编程语言,在软件开发领域有着不可替代的地位,...

    黑马程序员Javase笔记

    "黑马程序员Javase笔记"是一个自学者在学习黑马程序员提供的Java全套课程过程中整理的笔记,主要涵盖了Java Standard Edition (Javase) 的核心内容。下面将详细讨论其中的关键知识点。 首先,DOS命令是操作系统中的...

    黑马程序员匠心之作 C++教程_第7阶段-C++实战项目机房预约讲义.rar

    《黑马程序员匠心之作 C++教程_第7阶段-C++实战项目机房预约讲义》是为C++初学者量身定制的一份详细教学资源。这份讲义深入浅出地介绍了C++编程语言,并通过实际的机房预约系统项目,帮助学习者将理论知识与实践相...

    黑马程序员匠心之作 C++教程_第5阶段-C++提高编程资料讲义.rar

    7. **STL(标准模板库)**:STL是C++的标准库,包含了容器(如vector、list、set等)、迭代器、算法和函数对象等组件,极大地提高了代码的效率和可读性。熟悉STL的使用是提高C++编程能力的必经之路。 8. **异常处理...

    B站《黑马程序员匠心之作-C++教程从0到1入门编程,学习编程不再难》 配套笔记

    【标题】:“B站《黑马程序员匠心之作-C++教程从0到1入门编程,学习编程不再难》 配套笔记” 【描述】提及的是一个针对初学者的C++教学资源,来自B站上的视频课程“BV1et411b73Z”。这门课程的特色在于提供了一份...

    JavaWeb 视频教程 传智播客 第12天 共28天

    例如,JSTL的`fmt`标签库可以方便地处理日期和时间格式化,`c`标签库提供了条件语句和迭代操作。 在"java web之设计模式"部分,教程可能会涵盖设计模式在JavaWeb开发中的应用。设计模式是解决软件设计中常见问题的...

    黑马程序员匠心之作 C++教程_第6阶段实战-基于STL泛化编程的演讲比赛资料讲义.rar

    《黑马程序员匠心之作 C++教程_第6阶段实战-基于STL泛化编程的演讲比赛资料讲义》是一份专为C++初学者设计的教程资料,由知名的黑马程序员团队精心制作。这份教程以STL(Standard Template Library,标准模板库)为...

    集合-黑马程序员Java学习笔记

    本学习笔记由黑马程序员提供,旨在帮助初学者深入理解Java中的集合框架及其使用方法。 首先,我们来探讨“集合”的基本概念。在Java中,集合是一个对象容器,可以容纳多个元素,这些元素可以是任意类型的数据。Java...

    黑马程序员C++教程讲义-保真

    - STL是C++库的重要组成部分,包括容器(如vector、list、set等)、迭代器、算法和内存管理工具。 - 使用STL可以提高代码效率,减少程序员编写低级代码的工作量。 7. **输入/输出流(I/O Stream)** - C++的I/O...

    黑马程序员JAVA面试宝典2018年5月最新版

    此外,集合框架的高级话题,如泛型、迭代器、比较器、并发容器也会有详细阐述。 IO流和NIO在面试中也经常出现,书中会介绍字节流、字符流、缓冲流、对象序列化、文件操作以及Java NIO(非阻塞I/O)的概念和应用。 ...

    Python课后题答案.docx

    - **构思实现,产品早期原型和迭代**:快速搭建原型验证想法。 3. **Python2.x和Python3.x的主要区别**: - **Print语句**:Python 2使用`print`语句,Python 3使用`print()`函数。 - **字符串类型**:Python 2...

    C++程序设计教程第二版课后习题答案

    9. **STL(标准模板库)**:STL是C++中的一部分,包含容器(如vector、list、set等)、迭代器、算法和函数对象,极大地提高了开发效率。 10. **文件操作**:C++提供了I/O流库(iostream),可以进行标准输入输出...

    C++程序设计教程第二版课后答案

    8. **STL(Standard Template Library)**:STL是C++的标准库,包含容器(如数组、列表、映射等)、迭代器、算法和函数对象,极大地提高了开发效率。 课后答案通常会涵盖这些知识点的实际应用,通过解题过程可以...

    毕向东1402

    通过观看“黑马程序员_毕向东_Java基础视频教程第14天-06-集合框架(List集合具体对象的特点).avi”和“黑马程序员_毕向东_Java基础视频教程第14天-03-集合框架(迭代器).avi”,你将能深入了解Java集合框架中的List...

    【黑马程序员就业班】1

    【黑马程序员就业班】1 的课程内容涵盖了C++编程、STL编程、QT实战、Linux系统基础以及Linux和数据库相关的编程知识。以下是这些主题的详细解释: 1. **C++核心编程**:C++是一种静态类型、编译式、通用的、大小写...

    2014黑马程序员JAVA基础测试题

    调用ArrayList的iterator()方法获取迭代器,然后在循环中使用hasNext()检查是否有下一个元素,next()获取下一个元素并进行处理。 5. 代码执行结果分析: - `s.substring(1)`:此操作不会改变原字符串`s`,因为...

    黑马程序员《Java自学宝典》源代码

    7. **集合框架**:熟悉ArrayList、LinkedList、HashSet、HashMap等集合类的用法,理解泛型和迭代器的概念。 8. **多线程**:学习如何创建和管理线程,包括Thread类和Runnable接口,以及同步机制(如synchronized...

    黑马程序员入学Java知识

    ### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机执行一系列任务的过程。 2. **Java语言概述,历史、特点** - **概述**:Java是一种...

    第三阶段 黑马程序员C++提高编程

    ### 第三阶段 黑马程序员C++提高编程 #### 知识点概述: 在本阶段的学习资料中,重点聚焦于C++的高级特性——泛型编程及其应用之一:标准模板库(Standard Template Library, STL)。泛型编程允许开发者编写代码时...

Global site tag (gtag.js) - Google Analytics