黑马程序员技术交流社区

标题: java迭代器的使用 [打印本页]

作者: Sakuratossi    时间: 2014-8-30 12:33
标题: java迭代器的使用
如何从一个容器中取出元素?因为每个容器的内部数据结构不一样,取出的细节也不一样,容器都有共性的内容:取出和判断。所以在容器中定义了内部类用来取出容器的元素
,集合中的内部类都符合一个规则,将些共性取出,这个规则就是迭代器

迭代器(Iterator)有三个方法:

(1) 使用next()获得序列中的下一个元素。
(2) 使用hasNext()检查序列中是否还有元素。
(3) 使用remove()将迭代器新返回的元素删除。

练习:
去除arraylist的重复元素。
新建一个arraylist容器,把不相同的元素都复制到其中
newArraylist.contains(oldArraylist'e) contains方法调用的是equals方法比较,即比较两个对象的哈希地址值。

总结: 值得注意的是迭代器在循环中被调用次数的情况,下面是在练习过程中遇到的迭代器被调用两次的情况

import java.util.*;
class ArrayListTest
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();

al.add("java01");
al.add("java02");
al.add("java01");
al.add("java02");
al.add("java01");
al.add("java03");

ArrayList a = uniqueElement(al);

sop(a);
}
public static ArrayList uniqueElement(ArrayList al)
{
ArrayList al1 = new ArrayList();

//for (Iterator it=al.iterator(); it.hasNext(); )
// {
// if (!al1.contains(it.next())) {   // 如果al1 不包含 当前元素, 就把该元素添加进去
// al1.add(it.next()); // 此处调用了两次 it.next 方法,指针走了两个位置!!!
// sop("al1 = "+al1);
// }
// }

for (Iterator it=al.iterator(); it.hasNext(); )
{
Object obj = it.next();
if(!al1.contains(obj))
al1.add(obj);
sop("al1 = "+al1);
}

return al1;
}

public static void sop(Object obj)
{
System.out.println(obj);
}
}
作者: 【灰太狼】    时间: 2014-8-30 17:01
总结的不错,坚持住你就赢了
作者: ItJack    时间: 2014-9-3 18:44
总结得很好,不错,学习了。
作者: dhgcy    时间: 2014-9-5 20:53
感谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2