首页 > 其他 > 详细

集合循环的方法和常规错误

时间:2019-08-10 19:06:43      阅读:77      评论:0      收藏:0      [点我收藏+]

集合训话一般有三种:for循环、增强for循环和迭代器。这里主要讲一下for循环和迭代器方法。

1、增强 for循环:

  注意:因为集合不同于数组,集合中元素类型不一定一致,所以需要定义Object类型的变量接收集合中的元素。

	@Test
	public void Testfor() {
		Collection coll = new ArrayList();
		coll.add(new Date());
		coll.add("AA");
		coll.add(123);
		coll.add("BB");
		coll.add(new String("CC"));

		// 增强for循环
		for (Object i : coll) {
			System.out.println(i);
		}
	}

 2、迭代器:

  注意:迭代器是集合循环中的常用方法。【开始迭代时,可以理解为‘指针’在首个元素上方,所以,首先hasNext()判断下一个元素是否存在,然后用next()输出。

     hasNext():判断是否有下一个元素。

     next():返回下一个元素。

	@Test
	public void TestIterator() {
		Collection coll = new ArrayList();
		coll.add(new Date());
		coll.add("AA");
		coll.add(123);
		coll.add("BB");
		coll.add(new String("CC1"));
		// 迭代器
		Iterator i = coll.iterator();
		while (i.hasNext()) {
			System.out.println(i.next());
		}
	}

 3、错误写法:【这种写法时常规遇到的错误写法】

    关于以下代码的解释:首先明白next()的作用,‘指针‘下移,返回下一个元素。【这里并不实际存在指针的概念,为了加强理解引入C语言中的指针,可以理解为元素下标】

      在while中第一次判断next()是否为空时,实际上此次操作返回new Date()元素,同时 ‘指针‘ 从首个元素的最上方移动到new Date() .进入循环后的next()返回第二个元素 ‘AA‘,同时 ‘指针‘c从第一个元素移动到第二个元素。

      在while中第二次判断next()是否为空时,实际上此次操作返回 123 元素,同时 ‘指针‘ 从第二个元素的最上方移动到 123 .进入循环后的next()返回第四个元素 ‘BB‘,同时 ‘指针‘c从第三个元素移动到第四个元素。

      后续元素以此类推。

    输出结果:

    AA

    BB

    抛出异常:

    java.util.NoSuchElementException

 

总结:1、while条件中的判断并不起到实际作用保证输出有元素。因为判断和输出的不是一个元素。所以导致编译正常,但是实际输出时间隔式的输出。

   2、会出现while判断中的元素时最后一个元素,循环中的输出为为空,抛出异常:java.util.NoSuchElementException。

	@Test
	public void TestNext() {
		Collection coll = new ArrayList();
		coll.add(new Date());
		coll.add("AA");
		coll.add(123);
		coll.add("BB");
		coll.add(new String("CC2"));
		
		// 错误写法
		Iterator i = coll.iterator();
		while (null != i.next()) {
			System.out.println(i.next());
		}
	}

 

集合循环的方法和常规错误

原文:https://www.cnblogs.com/honny-seven/p/11332249.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!