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接口的更多相关文章

  1. Java容器之Map接口

    Map 接口: 1. 实现 Map 接口的类是用来存储键-值(key-value)对: 2. Map 接口的实现类有 HashMap 和 TreeMap 等: 3. Map 类中存储的键-值对,通过键 ...

  2. Java容器之List接口

    List 接口: 1. List 接口是 Collection 的子接口,实现 List 接口的容器类中的元素是有顺序的,而且可以重复: 2. List 容器中的元素都对应一个整数型的序号记载其在容器 ...

  3. Java容器之Set接口

    Set 接口: 1. Set 接口是 Collection 的子接口,Set 接口没有提供额外的方法,但实现 Set 接口的容器类中的元素是没有顺序的,且不可以重复: 2. Set 容器可以与数学中的 ...

  4. Java 容器之Hashset 详解

    Java 容器之Hashset 详解.http://blog.csdn.net/nvd11/article/details/27716511

  5. Java 容器之 Connection栈队列及一些常用

    集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...

  6. java中的Iterator接口

    Iterator接口 Iterator接口也是Java集合框架的成员,但它与Collection系列.Map系列的集合不一样:Collection系列集合.Map系列集合主要用于盛装其他对象,而Ite ...

  7. Java容器之旅:容器基础知识总结

    下图展示了Java容器类库的完备图,包括抽象类和遗留构件(不包括Queue的实现). 常用的容器用黑色粗线框表示,点线框表示接口,虚线框表示抽象类,实线框表示类,空心箭头表示实现关系.Produce表 ...

  8. Java容器之Collections

    Collections 类来源于 java.util.Collections,从 java.lang.object继承. 此类完全由在 collection 上进行操作或返回 collection 的 ...

  9. Java容器之HashMap源码分析

    在java的容器框架中,hashMap是最常用的容器之一,下面我们就来深入了解下它的数据结构和实现原理 先看下HashMap的继承结构图 下面针对各个实现类的特点进行下说明:1)HashMap: 它是 ...

随机推荐

  1. openstack之kvm常用操作

    KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理. 1.   查看KVM虚拟机配置文件及运行状态 KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/ autostart目录 ...

  2. 大数据学习--day05(嵌套循环、方法、递归)

    嵌套循环.方法.递归 图形打印 public static void main(String[]arg) { /** * * * * * * */ // 3 2 1 0 // 1 3 5 for(in ...

  3. 新系统设置 github 私钥

    1.首先我得重新在git设置一下身份的名字和邮箱(因为当初都忘了设置啥了,因为遇到坑了)进入到需要提交的文件夹底下(因为直接打开git Bash,在没有路径的情况下,根本没!法!改!刚使用git时遇到 ...

  4. 解决WinScp连接被拒绝的问题

    尝试以下方法: 1) 开启|关闭防火墙(这里需要关闭) sudo ufw enable|disable 2) 开启远程服务 在终端界面输入:service sshd start.结果显示:ssh:un ...

  5. golang使用rabbitMQ入门代码

    package main import ( "github.com/streadway/amqp" "log" "time" ) func ...

  6. Java——多线程---18.11.22

    多线程代码:Runnable方法 package com.hebust.java.third; import java.util.Random; public class SaleTicket imp ...

  7. 笔记-django- HttpRequest/Response

    笔记-django- HttpRequest/Response 1.      HttpRequest/Response When a page is requested, Django create ...

  8. QT Creator 转VS2017+QT工程

    因为刚学QT 不熟悉其QT Creator 的开发环境,所以打算用VS2017来开发,因为要跨平台所以打算写出来的代码可以放在linux上编译. 这时就需要将VS2017的工程转换成QT Creato ...

  9. 【BZOJ4818】序列计数(动态规划,生成函数)

    [BZOJ4818]序列计数(生成函数) 题面 BZOJ 题解 显然是求一个多项式的若干次方,并且是循环卷积 或者说他是一个\(dp\)也没有问题 发现项数很少,直接暴力乘就行了(\(FFT\)可能还 ...

  10. CF 643 E. Bear and Destroying Subtrees

    E. Bear and Destroying Subtrees http://codeforces.com/problemset/problem/643/E 题意: Q个操作. 加点,在原来的树上加一 ...