集合框架--2
迭代器Iterator
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
1. Collection接口(续)
Collection共性方法(续)
(3). 查/获取(续)
[1]. 获取集合大小:int size();
[2]. 获取集合中的迭代器:Iterator<E> iterator();
{1}. Iterator 接口中的hasNext()方法
boolean hasNext(); 如果集合中仍然有元素可以迭代,返回true
{2}. 返回集合中迭代的下一个元素
E next();
举例:使用集合的迭代器来迭代输出集合中的元素
//7.Collection的取出操作
public static void methodObtain(){
Collectional1 =new ArrayList();
al1.add("java01");
al1.add("java02");
al1.add("java03");
al1.add("java04");
Iteratorit = al1.iterator();
while(it.hasNext()){
sop("<"+it.next()+">");
}
}
打印结果:
2. 迭代器
1). 迭代器的基本概念
(1). 迭代器的通俗含义
迭代器其实就是集合取出元素的方式
(2). 迭代器的特点
【Iterator接口:共性方法抽取的示意图】
[1]. 取出的动作定义在集合的内部,取出的动作被封装到集合的一个内部类
{1}. 这样取出的动作可以直接访问集合中存储的元素。
{2}. 由于每种容器的数据结构的底层实现不相同,所以每种容器都有描述自己这个“取出”动作的内部类。
[2]. 抽取所有容器取出动作过程的共性内容【先判断--再取出】,形成Iterator接口
尽管取出过程的动作细节不一致,这个取出动作的过程在功能上可以抽取出共性的内容:先进行判断,如果有元素存在,再进行元素迭代取出。
(3). Iterator对象的获取方法
通过Collection接口的方法:Iterator<E> iterator();来获取具体容器类的内部类的对象。
(4). 通过Iterator对象取出集合中元素的方式
Collection实现类迭代元素的标准方式:
[1]. 先通过Iterator对象的hasNext()方法进行元素是否存在的判断
[2]. 再通过Iterator对象的next()方法对存在的元素进行取出
(5). 迭代器源码学习
通过AbstractList.java这个源文件来查看这里面的取出动作的内部类的部分源码
public abstract class AbstractList<E> extendsAbstractCollection<E> implements List<E> {
……
//抽取动作被封装的内部类
private class Itr implements Iterator<E>{
……
public boolean hasNext() {
return cursor != size();
}
public E next() {
checkForComodification();
try {
Enext = get(cursor);
lastRet = cursor++;
return next;
}catch (IndexOutOfBoundsException e) {
checkForComodification();
throw new NoSuchElementException();
}
}
……
}
}
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------