java 集合的遍历方法

1.使用 Iterator 接口遍历集合元素

  1. Iterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素。

  2. 所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象。

  3. Iterator 仅用于遍历集合,Iterator 本身并不提供承装对象的能力。如果需要创建 Iterator 对象,则必须有一个被迭代的集合。

2. Iterator使用的dome

public class TestIterator {
	//面试题:
	public void testfor3() {
		String [] str = new String[] {"AA","BB","EE","DD"};
		for(String s : str) {
			s = "MM";//s为新定义的局部变量
		}
		for (int i = 0; i < str.length; i++) {
			System.out.println(str[i]);//打印结果为:
		}
	}
	public void testfor2() {
		String [] str = new String[] {"AA","BB","EE","DD"};
		for (int i = 0; i < str.length; i++) {
			str[i] = i + "";
		}
		for (int i = 0; i < str.length; i++) {
			System.out.println(str[i]);//打印结果为:
		}
	}
	//*-****************************************
	//使用增强for循环实现数组的遍历
	@Test
	public void testfor1() {
		String [] str = new String[] {"AA","BB","EE","DD"};
		for(String s : str) {
			System.out.println(s);
		}
	}
	
	
	//使用增强for循环实现集合的遍历
	@Test
	public  void testfor() {
		Collection coll = new ArrayList();
		coll.add(123);
		coll.add(new String("AA"));
		coll.add("john");
		coll.add("BBB");
		coll.add(44);
		
		for(Object obj: coll) {
			System.out.println(obj);
		}
	}
	//正确的写法:使用迭代器Iterator实现集合的遍历
	@Test
	public void test1() {
		Collection coll = new ArrayList();
		coll.add(123);
		coll.add(new String("AA"));
		coll.add("john");
		coll.add("BBB");
		coll.add(44);
		
		Iterator i = coll.iterator();
		while(i.hasNext()) {
			System.out.println(i.next());
		}
	}
	//错误的写法
	public void test2() {
		Collection coll = new ArrayList();
		coll.add(123);
		coll.add(new String("AA"));
		coll.add("john");
		coll.add("BBB");
		coll.add(44);
		
		Iterator i = coll.iterator();
		while(i.next()!=null) {
			//java.util.NoSuchElementExeption
			System.out.println(i.next());
		}
	}
}

3.Iterator遍历的两个方法的指向图

指向图

  1. i.hasNext()一开始指向的地址,集合的第一个元素的地址。
  2. i.next()指向的地址为i.hasNext()的下一个地址
  3. 当程序开始执行的时候,i.hasNext()指向的地址会依次往下, i.next()指向的地址也会依次往下
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值