黑马程序员技术交流社区
标题:
迭代器原理
[打印本页]
作者:
青皮核桃
时间:
2015-6-23 22:31
标题:
迭代器原理
迭代器是怎么遍历获取集合元素的呢
作者:
符慢慢
时间:
2015-6-23 23:49
这个 还在后面吧.记得 毕老师16天 有讲到..
作者:
rightyuan521
时间:
2015-6-23 23:51
Iterator是一个迭代器接口,专门用来迭代各种Collection集合,包括Set集合和List集合。
java要求各种集合都提供一个iteratot()方法,该方法返回一个Iterator用于遍历集合中的元素。至于返回的Iterator是哪一种实现类我们并不关心,这就是典型的“迭代器模式”。
使用Iterator遍历集合元素,很好的隐藏了集合的内部细节。
Iterator接口包含以下三个方法:
boolean hasNext():如果被迭代的集合元素还没有被遍历,则返回true。
Object next():返回集合里下一个元素
void remove():移除集合里上一次next()返回的元素
例子:
public class IteratorTest {
public static void main(String[] args) {
Collection books = new HashSet();
books.add("计算机网络");
books.add("数字信号处理");
books.add("java语言程序设计");
//生成迭代器
Iterator it = books.iterator();
int i=0;
while(it.hasNext()){
//next()返回的数据是Object型,需要强制转化
String info = (String)it.next();
//输出遍历的每一个元素
System.out.println("第"+i+"个元素:"+info);
if(info.equals("数字信号处理")){
System.out.println(i);
it.remove(); //把《数字信号处理》从集合books中移除
}
i++;
}
//输出移除后的结果
System.out.println(books);
}
}
作者:
JJJD
时间:
2015-6-23 23:59
//使用Iterator对象,迭代遍历
Iterator<String> it=li.iterator();
while(it.hasNext()){
System.out.println("迭代输出:"+it.next());
}
复制代码
作者:
Baymaxman
时间:
2015-6-24 11:49
楼上很对~
作者:
1千克=1024克
时间:
2015-6-24 13:04
listIterator 目测是通过索引进行取数据遍历的
而Iterator的工作原理到底是什么捏 没有索引 怎么知道集合中有多少数据,每个数据是什么
求解啊 功能原理
作者:
青皮核桃
时间:
2015-6-24 22:13
1千克=1024克 发表于 2015-6-24 13:04
listIterator 目测是通过索引进行取数据遍历的
而Iterator的工作原理到底是什么捏 没有索引 怎么知道集 ...
public class ArrayList implements List
{
public Iterator iterator() {
return new Itr();
}
private class Itr implements Iterator {
public boolean hasNext() {
return xxx;;
}
public E next() {
return xxx;
}
}
}public interface Iterator
{
public abstract boolean hasNext();
public abstract Object next();
}
public interface Collection
{
public abstract Iterator iterator();
}
public interface List extends Collection
{
...
}
public class ArrayList implements List
{
public Iterator iterator()
{
return new Itr();
}
private class Itr implements Iterator
{
public boolean hasNext(){...}
public Object next(){...}
}
}
由于多种集合的数据结构不同,所以存储方式不同,所以,取出方式也不同。
这个时候,我们就把判断和获取功能定义在了一个接口中,将来,遍历哪种
集合的时候,只要该集合内部实现这个接口即可
作者:
贾森
时间:
2015-6-24 22:40
1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
(2) 使用next()获得序列中的下一个元素。
(3) 使用hasNext()检查序列中是否还有元素。
作者:
金亮0602
时间:
2015-6-24 23:13
刚学习了,有人回答的更详细了,顺便学习一下
作者:
shuaiqi_P_D
时间:
2015-6-24 23:29
原理是 内部类实现的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2