Iterator的原理

  • 所有实现Collection接口的容器类都有一个iteractor()方法,用于返回一个实现Iterator接口的对象
  • Iterator对象称为迭代器,用以实现对容器内元素的遍历操作
  • Iterator接口定义了三个方法 hasNext(),next(),remove()

Iterator具体执行原理如图所示:
在这里插入图片描述

Iterator的用法

public class Demo {

	public static void main(String[] args) {
		iterList();
		iterSet();
		iterMap();
	}

	private static void iterList() {
		List<String> list = new LinkedList<String>();
		list.add("java1");
		list.add("Android1");
		list.add("IOS1");
		/**List的迭代*/
		for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
			String str = (String) iterator.next();
			System.out.println(str);
		}
	}
	/**List方法打印结果如下:*/
	//java1
	//Android1
	//IOS1

	private static void iterSet() {
		Set<String> set = new HashSet<String>();
		set.add("java2");
		set.add("java2");
		set.add("IOS2");
		/**Set的迭代*/
		for (Iterator<String> iterator = set.iterator(); iterator.hasNext();) {
			String str = iterator.next();
			System.out.println(str);
		}
	}
	/**Set方法打印结果如下:*/
	//java2
	//IOS2

	private static void iterMap() {
		Map<String, String> map = new HashMap<String, String>();
		map.put("key_1", "java3");
		map.put("key_2", "Android3");
		map.put("key_3", "ios3");
		/**Map迭代键key和值value  map.entrySet()返回此映射中包含键值映射关系的Set视图*/
		Iterator<Entry<String, String>> iter = map.entrySet().iterator();
		while (iter.hasNext()) {//是否有元素
			Entry<String, String> entry = iter.next();//返回元素
			String key = entry.getKey();
			String value = entry.getValue();
			System.out.println(key + " : " + value);
			//iter.remove();//删除元素
		}
		// System.out.println(map.size());
		/**Map迭代键key map.keySet()返回此映射中包含的键的Set视图*/
		Iterator<String> keyIter = map.keySet().iterator();
		while (keyIter.hasNext()) {
			String str = keyIter.next();
			System.out.println(str);
		}
	}
	/**Map方法打印结果如下:*/
	//key_3 : ios3
	//key_2 : Android3
	//key_1 : java3

	//key_3
	//key_2
	//key_1
}
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐