集合框架-Collection集合-3

本文介绍Java中使用迭代器遍历Collection集合的具体步骤与实践案例,包括存储字符串及自定义对象,并解析为何迭代器被设计为接口而非类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(7)Collection集合的案例(遍历方式 迭代器)

集合的操作步骤:

    A:创建集合对象

    B:创建元素对象

    C:把元素添加到集合

    D:遍历集合

            a.通过集合对象获取迭代器对象

            b.通过迭代器对象的hasNext()判断是否有元素

            c.通过迭代器对象的next()方法获取元素并移动到下一个位置

迭代器为什么不定义成一个类,而是一个接口?

假设迭代器定义的是一个类,这样我们就可以创建该类的对象,调用该类的方法来实现集合的遍历。但是呢?我们想想,

java中提供了很多的集合类,而这些集合类的数据结构是不同的,所以,存储方式和遍历的方式应该是不同的。

进而它们的遍历方式应该是不一样的,最终,就没有定义迭代器类的。

而无论你是哪种集合,你都应该具备获取元素的操作,并且,最好在辅助于判断功能,这样,在获取前,先判断。这样就更不容

易出错。也就是说,判断功能和获取功能应该是一个集合遍历所具备的,而每种集合的方式又不太一样,所以我们把这两个功能

给提取出来,并不提供具体实现,这种方式就是接口。

那么,真正的具体的实现类在哪里呢?在真正的具体的子类中,以内部类的方式体现的。


A:存储字符串并遍历
package cn.itcast_04;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
 * 需求:存储字符串并遍历。
 * 
 * 分析:
 * 		A:创建集合对象
 * 		B:创建字符串对象
 * 		C:把字符串对象添加到集合中
 * 		D:遍历集合
 */
public class CollectionTest {
	public static void main(String[] args) {
		// 创建集合对象
		Collection c = new ArrayList();

		// 创建字符串对象
		// 把字符串对象添加到集合中
		c.add("林青霞");
		c.add("风清扬");
		c.add("刘意");
		c.add("武鑫");
		c.add("刘晓曲");

		// 遍历集合
		// 通过集合对象获取迭代器对象
		Iterator it = c.iterator();
		// 通过迭代器对象的hasNext()方法判断有没有元素
		while (it.hasNext()) {
			// 通过迭代器对象的next()方法获取元素
			String s = (String) it.next();
			System.out.println(s);
		}
	}
}


B:存储自定义对象并遍历
package cn.itcast_04;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
 * 需求:存储自定义对象并遍历Student(name,age)
 *
 * 分析:
 * 		A:创建学生类
 * 		B:创建集合对象
 * 		C:创建学生对象
 * 		D:把学生对象添加到集合对象中
 * 		E:遍历集合
 */
public class CollectionTest2 {
	public static void main(String[] args) {
		// 创建集合对象
		Collection c = new ArrayList();

		// 创建学生对象
		Student s1 = new Student("貂蝉", 25);
		Student s2 = new Student("小乔", 16);
		Student s3 = new Student("黄月英", 20);
		Student s4 = new Student();
		s4.setName("大乔");
		s4.setAge(26);

		// 把学生对象添加到集合对象中
		c.add(s1);
		c.add(s2);
		c.add(s3);
		c.add(s4);
		c.add(new Student("孙尚香", 18)); // 匿名对象

		// 遍历集合
		Iterator it = c.iterator();
		while (it.hasNext()) {
			Student s = (Student) it.next();
			System.out.println(s.getName() + "---" + s.getAge());
		}
	}
}


package cn.itcast_04;

public class Student {
	private String name;
	private int age;

	public Student() {
		super();
	}

	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZHOU_VIP

您的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值