集合框架-Collection集合-3

ZHOU_VIP發表於2017-04-19
(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;
	}

}


相關文章