天天看點

集合疊代器iterator

  • 集合疊代器定義:
是疊代器設計模式的一個很好的實作
  • 集合中的疊代主要用途:
就是周遊集合中的元素,把List集合,和Set集合,Map集合都轉換成集合的疊代
  • 集合疊代的本質:
就是把所有的集合周遊方式轉換成疊代器這一種便利方式
  • 實作步驟

List集合轉換成疊代器集合,用疊代器api方法來疊代資料

Set集合轉換成疊代器集合,用疊代器api方法來疊代資料

Map集合轉換成疊代器集合,用疊代器api方法來疊代資料

  • 代碼示範:
/**
 * 示範集合的疊代iterator
 * @author PC
 */
public class IteratorService {
	/**
	 * 擷取一個List集合對象
	 * @return
	 */
	public List<Person> getPerson_List() {
		List<Person> list = new ArrayList<Person>();
		Student stu1 = new Student("張三", 20, "S001");
		Student stu2 = new Student("李四", 21, "S002");
		Student stu3 = new Student("王五", 22, "S003");
		Student stu4 = new Student("張五", 20, "S005");

		Teacher tea1 = new Teacher("趙六", 30, 10000);
		Teacher tea2 = new Teacher("田七", 35, 20000);
		list.add(stu1);
		list.add(stu2);
		list.add(stu3);
		list.add(stu4);

		list.add(tea1);
		list.add(tea2);

		return list;
	}

	/**
	 * 擷取一個Set集合對象
	 * @return
	 */
	public Set<Person> getPerson_Set() {
		Set<Person> set = new HashSet<Person>();
		Student stu1 = new Student("張三", 20, "S001");
		Student stu2 = new Student("李四", 21, "S002");
		Student stu3 = new Student("王五", 22, "S003");
		Student stu4 = new Student("張五", 20, "S005");

		Teacher tea1 = new Teacher("趙六", 30, 10000);
		Teacher tea2 = new Teacher("田七", 35, 20000);

		set.add(stu1);
		set.add(stu2);
		set.add(stu3);
		set.add(stu4);

		set.add(tea1);
		set.add(tea2);

		return set;
	}

	/**
	 * 擷取一個Map集合對象
	 * @return
	 */
	public Map<String, Person> getPerson_Map() {
		Map<String, Person> map = new HashMap<String, Person>();
		Student stu1 = new Student("張三", 20, "S001");
		Student stu2 = new Student("李四", 21, "S002");
		Student stu3 = new Student("王五", 22, "S003");
		Student stu4 = new Student("張五", 20, "S005");

		Teacher tea1 = new Teacher("趙六", 30, 10000);
		Teacher tea2 = new Teacher("田七", 35, 20000);

		map.put(stu1.getName(), stu1);
		map.put(stu2.getName(), stu2);
		map.put(stu3.getName(), stu3);
		map.put(stu4.getName(), stu4);

		map.put(tea1.getName(), tea1);
		map.put(tea2.getName(), tea2);

		return map;
	}

	/**
	 * 把List集合轉換成iterator疊代器 然後用疊代器的方式疊代資料
	 */
	public void iterator_List() {
		List<Person> list = this.getPerson_List();
		Iterator<Person> it = list.iterator();// 把List集合轉換成疊代器集合
		while (it.hasNext()) {// it.hasNext(),隻判斷是否有下一個資料
			// 如果有下一個資料,就取出下一個
			Person p = it.next();
			// 繼續根據具體的業務邏輯去擷取p對象中的資料
			CommonPerson cp = (CommonPerson) p;
			System.out.println("name=" + cp.getName() + "	age=" + cp.getAge());
		}
	}

	/**
	 * 把Set集合轉換成iterator疊代器 然後用疊代器的方式疊代資料
	 */
	public void iterator_Set() {
		Set<Person> set = this.getPerson_Set();
		Iterator<Person> it = set.iterator();// 把Set集合轉換成疊代器集合
		while (it.hasNext()) {// it.hasNext(),隻判斷是否有下一個資料
			// 如果有下一個資料,就取出下一個
			Person p = it.next();
			// 繼續根據具體的業務邏輯去擷取p對象中的資料
			CommonPerson cp = (CommonPerson) p;
			System.out.println("name=" + cp.getName() + "	age=" + cp.getAge());
		}
	}
	/**
	 * 把Map集合轉換成iterator疊代器 然後用疊代器的方式疊代資料
	 */
	public void iterator_Map() {
		Map<String, Person> map = this.getPerson_Map();
		Iterator<Person> it = map.values().iterator();// 把Map集合的所有value轉換成疊代器集合
		while (it.hasNext()) {// it.hasNext(),隻判斷是否有下一個資料
			// 如果有下一個資料,就取出下一個
			Person p = it.next();
			// 繼續根據具體的業務邏輯去擷取p對象中的資料
			CommonPerson cp = (CommonPerson) p;
			System.out.println("name=" + cp.getName() + "	age=" + cp.getAge());
		}
	}