java 集合(2) 遍历collection集合方法 iterator / 加强型for循环

1.iterator 遍历方法

代码如下:

		Collection c = new ArrayList();
		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);
		}


其中这两句做以解释,Collection c = new ArrayList();    

java.util.Iterator it = c.iterator();

这两句里都有多态存在,其中第二行代码用以下图解释

java 集合(2) 遍历collection集合方法 iterator / 加强型for循环_第1张图片

2.iterator 的remove方法

Collection c = new ArrayList();
		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();
		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一个元素。不能像数组一样用下标访问元素。只能傻瓜全取。


完成任务




你可能感兴趣的:(java 集合(2) 遍历collection集合方法 iterator / 加强型for循环)