Java容器之Iterator接口
Iterator 接口:
1. 所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象.
2. Iterator 对象称作迭代器,用以方便的实现对容器内元素的遍历操作.
3. Iterator 接口定义了如下方法:
boolean hasNext():如果仍有元素可以迭代,则返回 true;
object next():返回迭代的下一个元素。抛出:NoSuchElementException - 没有元素可以迭代;
void remove():删除游标左边的元素,在执行完next之后,该操作只能执行一次.


【注】:Iterator 就是一个统一的用来遍历Collection中所有元素的方法;
Demo_1:
import java.util.*;
class Name {
private String firstName, lastName;
public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String toString() {
return firstName+" "+lastName;
}
}
public class Test {
public static void main(String[] args) {
Collection c = new HashSet(); //
c.add(new Name("f1","l1"));
c.add(new Name("f2","l2"));
c.add(new Name("f3","l3"));
Iterator i = c.iterator(); // 使用迭代器访问HashSet中的每一个元素(要求每个元素类型一致)
while(i.hasNext()){
Name n = (Name)i.next(); // next()返回值为object类型,需要转换为相应类型
System.out.println(n);
}
}
}
Demo_1 运行结果:
f3 l3
f1 l1
f2 l2
Demo_2:
import java.util.*;
class Name {
private String firstName, lastName;
public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String toString() {
return firstName+" "+lastName;
}
}
public class Test {
public static void main(String[] args) {
Collection c = new HashSet(); //
c.add(new Name("f1","l1"));
c.add(new Name("f2","l2"));
c.add(new Name("f3","l3"));
c.add(12.59);
c.add("Hello");
ArrayList cc = new ArrayList(c); // 不适用迭代器访问Set中的元素
for(int i=0;i<cc.size();i++){
System.out.println(cc.get(i));
}
}
}
Demo_2 运行结果:
f3 l3
12.59
Hello
f1 l1
f2 l2
Demo_3:
import java.util.*;
public class Test {
public static void main(String[] args) {
Collection c = new HashSet(); //
c.add(123);
c.add(123.56);
c.add(234);
c.add(32);
c.add("hello");
Iterator i = c.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
}
}
Demo_3 运行结果:
123.56
32
234
123
hello
Iterator 对象的 remove 方法是在迭代过程中删除元素的唯一安全的方法:
import java.util.*;
public class Test {
public static void main(String[] args) {
HashSet c = new HashSet();
c.add("hello");
c.add("you");
c.add("are");
c.add("good");
c.add("Hoodlum");
for(Iterator i = c.iterator();i.hasNext();){
if(i.next().toString().length()<4){
i.remove();
}
}
System.out.println(c);
}
}
运行结果:[hello, good, Hoodlum]
Java容器之Iterator接口的更多相关文章
- Java容器之Map接口
Map 接口: 1. 实现 Map 接口的类是用来存储键-值(key-value)对: 2. Map 接口的实现类有 HashMap 和 TreeMap 等: 3. Map 类中存储的键-值对,通过键 ...
- Java容器之List接口
List 接口: 1. List 接口是 Collection 的子接口,实现 List 接口的容器类中的元素是有顺序的,而且可以重复: 2. List 容器中的元素都对应一个整数型的序号记载其在容器 ...
- Java容器之Set接口
Set 接口: 1. Set 接口是 Collection 的子接口,Set 接口没有提供额外的方法,但实现 Set 接口的容器类中的元素是没有顺序的,且不可以重复: 2. Set 容器可以与数学中的 ...
- Java 容器之Hashset 详解
Java 容器之Hashset 详解.http://blog.csdn.net/nvd11/article/details/27716511
- Java 容器之 Connection栈队列及一些常用
集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...
- java中的Iterator接口
Iterator接口 Iterator接口也是Java集合框架的成员,但它与Collection系列.Map系列的集合不一样:Collection系列集合.Map系列集合主要用于盛装其他对象,而Ite ...
- Java容器之旅:容器基础知识总结
下图展示了Java容器类库的完备图,包括抽象类和遗留构件(不包括Queue的实现). 常用的容器用黑色粗线框表示,点线框表示接口,虚线框表示抽象类,实线框表示类,空心箭头表示实现关系.Produce表 ...
- Java容器之Collections
Collections 类来源于 java.util.Collections,从 java.lang.object继承. 此类完全由在 collection 上进行操作或返回 collection 的 ...
- Java容器之HashMap源码分析
在java的容器框架中,hashMap是最常用的容器之一,下面我们就来深入了解下它的数据结构和实现原理 先看下HashMap的继承结构图 下面针对各个实现类的特点进行下说明:1)HashMap: 它是 ...
随机推荐
- H5测试(转载)
可能有些朋友不明白啥是H5,但其实生活中我们经常会碰到. 比如,你经常收到的朋友虐狗第一式—结婚请贴. 你的朋友圈,可能会经常看到宝妈们虐狗第二式—晒可爱宝宝的相册. 你有可能也收到过这样,非常直观, ...
- python爬虫#数据存储#JSON/CSV/MYSQL/MongoDB/
Json数据处理 JSON支持数据格式: 对象(字典).使用花括号. 数组(列表).使用方括号. 整形.浮点型.布尔类型还有null类型. 字符串类型(字符串必须要用双引号,不能用单引号). 多个数据 ...
- Linux 下 gcc 与 g++的差别
参考网易博客者"静心"的博客--<gcc与g++的区别>结合自己的认识做出的个人领悟.(由于个人水平有限,难免会存在错误的地方,请见谅) 一般而言,在Linux下编译程 ...
- UNIX故障--sun m4000服务器故障硬盘更换案例
一.故障诊断 查看messages日志c0d0t0这块盘不断报错,类型为:retryable,如下: root@gdhx # more /var/adm/messages Aug 5 16:43:0 ...
- python3 使用语音库pyttsx3
python3 使用语音库pyttsx3 环境linux+python3.6 sudo pip install pyttsx3 sudo apt-get install espeak 代码实例 imp ...
- Java集合——ArrayList源码详解
) ArrayList 实现了RandomAccess, Cloneable, java.io.Serializable三个标记接口,表示它自身支持快速随机访问,克隆,序列化. public clas ...
- JavaScript---复选框反选全选
Script <script type="text/javascript"> /*直接使用document.getElementsByName("c1&quo ...
- 为啥学蛇和python10年后的变化
作者:cheng rianley链接:https://www.zhihu.com/question/22112542/answer/166053516来源:知乎著作权归作者所有.商业转载请联系作者获得 ...
- Unbuntu安装RVM
apt-get install curl #安装rvm curl -L https://get.rvm.io | bash #执行启动 source /home/mafei/.rvm/scripts/ ...
- CC3200-LAUNCHXL驱动不能正常识别的问题
1. 本次使用利尔达的CC3200底板,完全兼容官方CC3200-LAUNCHXL,如果上电之后驱动识别为2路串口,是有问题的.原因是FT2232外接的EEPROM没有烧写固件. 2. 安装FT_Pr ...