1.iterator 遍历方法
代码如下:
Collection c = new ArrayList<Iplong>();
c.add(new Iplong("li","ji"));
c.add(new Iplong("li","jia"));
java.util.Iterator it = c.iterator();//为了创造出一个统一的访问集合类的东西,java.util.Iterator 担当了这个使命。
//Iterator就是统一的用来遍历collection里元素的方法。可以理解成指针/游标
while(it.hasNext()){
Iplong ip = (Iplong) it.next();//next()返回的是object类型,需要转化,这个强转是正常写法
System.out.println(ip.firstName+"\t"+ip.lastName);
}
java.util.Iterator it = c.iterator();
这两句里都有多态存在,其中第二行代码用以下图解释
2.iterator 的remove方法
Collection c = new ArrayList<Iplong>();
c.add(new Iplong("li","ji"));
c.add(new Iplong("li","jia"));
c.add(new Iplong("lia","jia"));
c.add(new Iplong("lig","jia"));
java.util.Iterator it = c.iterator();//为了创造出一个统一的访问集合类的东西,java.util.Iterator 担当了这个使命。
//Iterator就是统一的用来遍历collection里元素的方法。可以理解成指针/游标
while(it.hasNext()){
Iplong ip = (Iplong) it.next();//next()返回的是object类型,需要转化,这个强转是正常写法
//if(ip.firstName.equals("li"))
// it.remove();
}
System.out.println(c.toString());
}
以上代码返回结果:
[test.java.Iplong@d7d, test.java.Iplong@d7d, test.java.Iplong@1a284, test.java.Iplong@1a28a]
如果把注释的两句打开,结果:
[test.java.Iplong@1a284, test.java.Iplong@1a28a]
可见iterator的remove方法起到了作用。注意在这里it.remove()不能换成c.remove()。
3.加强型for循环
Collection c = new ArrayList<Iplong>();
c.add(new Iplong("li","ji"));
c.add(new Iplong("li","jia"));
c.add(new Iplong("lia","jia"));
c.add(new Iplong("lig","jia"));
for(Object collectElem : c)
System.out.println(collectElem.toString());
这种加强型好处是方便,只有这一个好处
缺点:不能像上面iterator一样remove一个元素。不能像数组一样用下标访问元素。只能傻瓜全取。
完成任务