当前课程知识点:Java程序设计 > 第六章 对象群体的组织 > 6.6-遍历Collection > 遍历Collection
大家好
欢迎回来继续学习Java语言程序设计
这一节我们来学习如何遍历一个Collection
如果我们希望去遍历一个实现了
Collection接口的集合类的对象
那么有哪些主要的方法呢
首先可以通过Enumeration
或Iterator这两个接口
对集合进行遍历
另外可以用增强的
for循环来遍历集合
还可以通过聚集操作来遍历集合
现在我就把这几种方式
给大家做一个简单的介绍
Enumeration和Iterator
都能够从集合类的对象中
提取每一个元素
并且它还提供了
用于遍历元素的方法
Java中的许多方法
比如elements它都会
返回Enumeration类型的对象
而不是返回一个整个集合对象
Enumeration接口
它不能用于ArrayList对象
但是Iterator接口
既可以用于ArrayList
也可以用于Vector
Enumeration接口
是旧版本的Java的接口
那Iterator实际上
是对Enumeration接口的一个改进
所以现在在遍历集合元素的时候
我们优先选用Iterator接口
Iterator接口在遍历集合的时候
还可以同时去删除其中的对象
常用的方法有这样一些
像hasNext是判断这个集合中
是否还有下一个元素
Next可以取得
集合中的下一个元素
remove是去除一个元素
也就是删除一个元素
而这里注意是从集合中删除
最后一次调用Next的时候
返回的那个元素
而不是说
从这个Iterator类中去删除
下面的例子就演示了
怎么样使用Iterator
去遍历集合中的这些元素
在这一例子中
我们首先要构造一个String数组
然后对于这个数组
要进行一些过滤
将字符串长度大于4的
这些串滤掉
然后将余下的输出显示
好
要做这件事我们需要用到Vector
所以我们先构造一个向量
构造一个Vector
用数组来构造一个Vector
那我们首先
要把这个数组转成List
所以我们调用Arrays里面的
ArrayList方法数组转成列表
然后用它作为参数
去构造一个Vector
接下来我们就要遍历这个向量
遍历向量用什么
用这个iterator这个迭代器
好
那Vector它有一个iterator方法
可以返回一个迭代器
得到了这个迭代器以后
我们在while循环里面的每次
用这个hasNext
看还有没有下一个元素
如果有的话就把下一个元素
用next的方法取出来
转换成String类型字符串类型
然后判断它的长度是不是大于4
如果大于4我们就
将当前这个元素删除
从这个向量中删除要用remove
经过这样一轮遍历
同时就滤掉了长度大于4的
这样的元素
然后最后我们用这个println
输出一下整个向量
那么就是说它滤掉长度
大于4元素以后的剩下的内容
我们来看这个运行结果
在构造Vector之前的数组
是这个样子的
然后Vector里面
我们遍历过的元素是这些
那最后剩下的输出的元素
我们看到都是
长度不大于4的串的
第二种方式我们还可以
用我们处理数组的时候
就已经熟悉的这个增强的
for循环来遍历集合中的元素
现在我们来看一下
用这个增强的for循环来遍历集合还是挺方便的
在这儿我们也是
构造一个Vector对象
然后将一些字符串
压到这个对象里面去
add进去添加进去
然后接下来就是遍历一遍
遍历的话我们用这个
增强的这个for循环
用增强的for循环
这个时候我们不用去
管它循环要进行几次
那么用element方法
返回的这个集合的内容
里面的元素都会被依次遍历的
每一次会取出一个来
然后用来初始化这个String引用
也就说这个String引用
被会依次指向其中的所有元素
所以用这样的for循环
就依次的遍历了全部的元素了
第三种方式就是通过聚集操作
来遍历集合中的元素
通常聚集操作都是
与lambda表达式同时使用的
关于lambda表达式
我们在这个课里面
也没有课时去做详细介绍了
如果大家感兴趣的话
需要查阅更多的资料
现在我们就通过这个简单的事例
给大家一个大致的感觉
怎么样通过聚集操作来遍历
你写简单程序的时候
也可以先初步这样模仿
我们假设有一个实现了
Collection接口的
myShapesCollection
这样一个集合对象
其中有getColor方法
可以返回对象的颜色
getName方法可以返回对象的名字
那么我们接下来想做什么
想遍历这个对象中的元素
并且输出所有红色对象的名字
这个遍历就不是说
我必须要输出
所有的对象名字了
我们要有所选择
只输出红色对象的名字
那我们使用这个聚集操作
大家可以看到在这儿
首先通过这个Collection的对象
取得一个String一个流
然后在这个流上进行这种过滤
调用个filter方法
过滤出所有颜色是红色的对象
然后用forEach方法
对于这些所有的颜色
是红色的对象
依次进行统一的
这种输出名字的操作
这就是聚集操作配合的
这个lambda表达式
来进行集合元素的遍历
这一节我们简单了解了一下遍历Collection的三种途径
用Iterator是比较简单的
大家可以尝试
用增强for循环也是我们熟悉的
而聚集操作和lambda表达式
本身它不是我们这个课程
所要求的知识范围
但是我也给大家介绍一下
毕竟这是新版本JavaJDK的
非常有用的功能
大家要感兴趣的话
建议去参考更多的资料
好
这一节内容就是这些
-1.0-导学
--1.0-导学
-1.1-Java与面向对象程序设计简介
--第一章 Java语言基础知识--1.1-Java与面向对象程序设计简介
-1.2-基本数据类型与表达式
-第一章 Java语言基础知识--1.2-基本数据类型与表达式
-1.3-数组
--1.3.1-数组
-第一章 Java语言基础知识--1.3-数组
-1.4-算法的流程控制
--第一章 Java语言基础知识--1.4-算法的流程控制
-1.5-第一章小结
-第一章编程练习题
-课件
--外部链接
-Java环境配置、Eclipse使用、Helloworld程序详解
--使用eclipse建立Java项目、编写和运行Java程序
-Java数据类型
--Java整数类型
--Java浮点类型
--数据类型实战
--数据类型转换
--Java强制类型转换精度损失示例与表达式中的数据类型转换
-Java数组
-Java变量
--Java的变量
-命令行参数
--命令行参数的介绍
-2.0-导学
--2.0-导学
-2.1-面向对象方法的特性
--第二章 类与对象--2.1-面向对象方法的特性
-2.2-1-类声明与对象创建
--第二章 类与对象--2.2-1-类声明与对象创建
-2.2-2-数据成员
--第二章 类与对象--2.2-2-数据成员
-2.2-3-方法成员
--第二章 类与对象--2.2-3-方法成员
-2.2-4-包
--2.2-4-包
--第二章 类与对象--2.2-4-包
-2.2-5-类的访问权限控制
--第二章 类与对象--2.2-5-类的访问权限控制
-2.3-1-对象初始化
--第二章 类与对象--2.3-1-对象初始化
-2.3-2-内存回收
--第二章 类与对象--2.3-2-内存回收
-2.4-枚举类
--2.4-枚举类
--第二章 类与对象--2.4-枚举类
-2.5-应用举例
--2.5-应用举例
-2.6-第2章小结
-第二章编程练习题
-课件
--第二章课件
-3.0-导学
--3.0-导学
-3.1.1-3.1.2-类继承的概念和语法
--第三章 类的重用--3.1.1-3.1.2-类继承的概念和语法
-3.1.3-隐藏和覆盖
--第三章 类的重用--3.1.3-隐藏和覆盖
-3.2-Object 类
--第三章 类的重用--3.2-Object 类
-3.3-终结类与终结方法
--第三章 类的重用--3.3-终结类与终结方法
-3.4-抽象类
--3.4-抽象类
--第三章 类的重用--3.4-抽象类
-3.5-泛型
--3.5-泛型
--第三章 类的重用--3.5-泛型
-3.6-类的组合
--3.6-类的组合
-3.7-小结
--3.7-小结
-第三章编程练习题
-课件
--课件
-4.0-导学
--导学
-4.1-接口
--接口
--第四章 接口与多态--4.1-接口
-4.2.1-4.2.2-类型转换
--类型转换
--第四章 接口与多态--4.2.1-4.2.2-类型转换
-4.2.3-方法的查找
--方法的查找
--第四章 接口与多态--4.2.3-方法的查找
-4.3-多态的概念
--多态的概念
--第四章 接口与多态--4.3-多态的概念
-4.4-多态的应用举例
--多态的应用举例
--第四章 接口与多态--4.4-多态的应用举例
-4.5-构造方法与多态性
--构造方法和多态性
--第四章 接口与多态--4.5-构造方法与多态性
-4.6-本章小结
--本章小结
-第四章编程作业
-课件
--课件
-5.0-导学
--5.0-导学
-5.1.1-5.1.2-异常处理的概念
--第五章 输入输出--5.1.1-5.1.2-异常处理的概念
-5.1.3-5.1.5-异常的处理
--第五章 输入输出--5.1.3-5.1.5-异常的处理
-5.2-输入输出流的概念
--输入输出流的概念
--第五章 输入输出--5.2-输入输出流的概念
-5.3.1-写文本文件
--写文本文件
--第五章 输入输出--5.3.1-写文本文件
-5.3.2-读文本文件
--读文本文件
--第五章 输入输出--5.3.2-读文本文件
-5.3.3-写二进制文件
--写二进制文件
--第五章 输入输出--5.3.3-写二进制文件
-5.3.4-读二进制文件
--读二进制文件
-5.3.5-File类
--File类
-5.3.6-处理压缩文件
--处理压缩文件
-5.3.7-对象序列化
--对象序列化
-5.3.8-随机文件读写
--随机文件读写
-5.4-本章小结
--本章小结
-课件
--课件
-6.0-导学
--导学
-6.1-Java集合框架介绍
--第六章 对象群体的组织--6.1-Java集合框架介绍
-6.2-主要接口及常用的实现类
--第六章 对象群体的组织--6.2-主要接口及常用的实现类
-6.3-常用算法
--常用算法
-6.4-数组实用方法
-6.5-基于动态数组的类型(Vector, ArrayList)
--基于动态数组的类型(Vector, ArrayList)
-6.6-遍历Collection
-6.7-Map接口及其实现
-6.8-第6章小结
--第6章小结
-课件
--课件
-7.0-导学
--导学
-7.1-绘图
--绘图
-7.2-Swing基础
--Swing基础
-7.3-Swing的层次
--Swing的层次
-7.4-布局管理
--布局管理
-7.5-内部类
--内部类
-7.6-事件处理的基本概念
-7.7-事件派发机制
--事件派发机制
-7.8-顶层容器
--7.8-顶层容器
-7.9-中间层容器(一)
-7.10-中间层容器(二)
-7.11-原子组件(一)
-7.12-原子组件(二)
-7.13-原子组件(三)
-7.14-其它Swing特性
-7.15-第7章小结
-课件
--课件