------- 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());
}
}
}
相关推荐
5. **集合框架**:深入学习ArrayList、LinkedList、HashSet、HashMap等常用集合类的内部实现和操作,以及集合的遍历和迭代器。 6. **输入/输出(IO)流**:讲解FileInputStream、FileOutputStream、BufferedReader...
通过这套《黑马程序员_历经5年锤炼(适合初学者入门的Java基础视频)》,初学者能够系统地学习Java的基础知识,为后续深入学习和实战打下坚实的基础。Java作为一种强大的编程语言,在软件开发领域有着不可替代的地位,...
"黑马程序员Javase笔记"是一个自学者在学习黑马程序员提供的Java全套课程过程中整理的笔记,主要涵盖了Java Standard Edition (Javase) 的核心内容。下面将详细讨论其中的关键知识点。 首先,DOS命令是操作系统中的...
《黑马程序员匠心之作 C++教程_第7阶段-C++实战项目机房预约讲义》是为C++初学者量身定制的一份详细教学资源。这份讲义深入浅出地介绍了C++编程语言,并通过实际的机房预约系统项目,帮助学习者将理论知识与实践相...
7. **STL(标准模板库)**:STL是C++的标准库,包含了容器(如vector、list、set等)、迭代器、算法和函数对象等组件,极大地提高了代码的效率和可读性。熟悉STL的使用是提高C++编程能力的必经之路。 8. **异常处理...
【标题】:“B站《黑马程序员匠心之作-C++教程从0到1入门编程,学习编程不再难》 配套笔记” 【描述】提及的是一个针对初学者的C++教学资源,来自B站上的视频课程“BV1et411b73Z”。这门课程的特色在于提供了一份...
例如,JSTL的`fmt`标签库可以方便地处理日期和时间格式化,`c`标签库提供了条件语句和迭代操作。 在"java web之设计模式"部分,教程可能会涵盖设计模式在JavaWeb开发中的应用。设计模式是解决软件设计中常见问题的...
《黑马程序员匠心之作 C++教程_第6阶段实战-基于STL泛化编程的演讲比赛资料讲义》是一份专为C++初学者设计的教程资料,由知名的黑马程序员团队精心制作。这份教程以STL(Standard Template Library,标准模板库)为...
本学习笔记由黑马程序员提供,旨在帮助初学者深入理解Java中的集合框架及其使用方法。 首先,我们来探讨“集合”的基本概念。在Java中,集合是一个对象容器,可以容纳多个元素,这些元素可以是任意类型的数据。Java...
- STL是C++库的重要组成部分,包括容器(如vector、list、set等)、迭代器、算法和内存管理工具。 - 使用STL可以提高代码效率,减少程序员编写低级代码的工作量。 7. **输入/输出流(I/O Stream)** - C++的I/O...
此外,集合框架的高级话题,如泛型、迭代器、比较器、并发容器也会有详细阐述。 IO流和NIO在面试中也经常出现,书中会介绍字节流、字符流、缓冲流、对象序列化、文件操作以及Java NIO(非阻塞I/O)的概念和应用。 ...
- **构思实现,产品早期原型和迭代**:快速搭建原型验证想法。 3. **Python2.x和Python3.x的主要区别**: - **Print语句**:Python 2使用`print`语句,Python 3使用`print()`函数。 - **字符串类型**:Python 2...
9. **STL(标准模板库)**:STL是C++中的一部分,包含容器(如vector、list、set等)、迭代器、算法和函数对象,极大地提高了开发效率。 10. **文件操作**:C++提供了I/O流库(iostream),可以进行标准输入输出...
8. **STL(Standard Template Library)**:STL是C++的标准库,包含容器(如数组、列表、映射等)、迭代器、算法和函数对象,极大地提高了开发效率。 课后答案通常会涵盖这些知识点的实际应用,通过解题过程可以...
通过观看“黑马程序员_毕向东_Java基础视频教程第14天-06-集合框架(List集合具体对象的特点).avi”和“黑马程序员_毕向东_Java基础视频教程第14天-03-集合框架(迭代器).avi”,你将能深入了解Java集合框架中的List...
【黑马程序员就业班】1 的课程内容涵盖了C++编程、STL编程、QT实战、Linux系统基础以及Linux和数据库相关的编程知识。以下是这些主题的详细解释: 1. **C++核心编程**:C++是一种静态类型、编译式、通用的、大小写...
调用ArrayList的iterator()方法获取迭代器,然后在循环中使用hasNext()检查是否有下一个元素,next()获取下一个元素并进行处理。 5. 代码执行结果分析: - `s.substring(1)`:此操作不会改变原字符串`s`,因为...
7. **集合框架**:熟悉ArrayList、LinkedList、HashSet、HashMap等集合类的用法,理解泛型和迭代器的概念。 8. **多线程**:学习如何创建和管理线程,包括Thread类和Runnable接口,以及同步机制(如synchronized...
### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机执行一系列任务的过程。 2. **Java语言概述,历史、特点** - **概述**:Java是一种...
### 第三阶段 黑马程序员C++提高编程 #### 知识点概述: 在本阶段的学习资料中,重点聚焦于C++的高级特性——泛型编程及其应用之一:标准模板库(Standard Template Library, STL)。泛型编程允许开发者编写代码时...