A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Sakuratossi 中级黑马   /  2014-8-30 12:33  /  1177 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何从一个容器中取出元素?因为每个容器的内部数据结构不一样,取出的细节也不一样,容器都有共性的内容:取出和判断。所以在容器中定义了内部类用来取出容器的元素
,集合中的内部类都符合一个规则,将些共性取出,这个规则就是迭代器

迭代器(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);
}
}

3 个回复

倒序浏览
总结的不错,坚持住你就赢了
回复 使用道具 举报
总结得很好,不错,学习了。
回复 使用道具 举报
感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马