properties svn Transformer generics graph ios7 pyqt Vanilla JS vue最新版本 vue网页 后台ui模板 nginx视频教程 jq遍历对象 jquery循环 android小程序源代码 数据库设计规范 oracle数据库版本 edate函数的使用方法 centos7安装gcc 郑州普通话 python图形界面开发 java安装环境 java中tostring java对象和类 java获取文件大小 java字符比较 linux服务器登录 coreldraw11 摩斯密码翻译 枪神传说辅助 qq免安装 电脑密码查看器 hexworkshop fireworks8序列号 黑市商人 excel应用大全 ABViewer go程序设计语言 java表白代码 万能低格工具还原u盘
当前位置: 首页 > 学习教程  > 编程语言

老王学习进度有点低

2020/8/31 14:36:51 文章标签:

Iterator {迭代器}接口介绍
Iterator 迭代器:Collection集合元素的通用获取方式。在取元素之前要先判断集合中有没有元素,如果有,就把这个元素取出来,
继续判断,如果还有就再取出出来,一直把集合中的所有元素全部取出来。这种取出方式专业术语称为迭代。
java.util.Iterator接口:迭代器(对集合进行遍历)
有两个方法
boolean hasNext()如果迭代具有更多元素,则返回 true 。判断集合中有没有下一个元素,有就返回true.没有就返回false
E next() 返回迭代中的下一个元素。取出集合中的下一个元素,
Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊
Collection接口中有一个方法,叫Iterator(),这个方法返回就是迭代器的实现类对象
Iterator iterator()返回此Collection的元素上进行迭代的迭代器。

迭代器的使用步骤(重点):
1,使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(动态)
2,使用Iterator接口中的方法hasNext判断有没有下一个元素
3.使用Iterator接口中的方法next取出集合中的下一个元素

使用

import java.util.Collection;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;



public class Demo01Iterator {
	public static void main(String[]args){
		// 创建一个集合对象
		Collection <String> coll = new ArrayList<String>();
		//集合中添加元素
		coll.add("姚明");
		coll.add("科比");
		coll.add("麦迪");
		coll.add("詹姆斯");
		coll.add("艾弗森");
// 1, 使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(动态)
		//注意:Iterator<E>接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,
		//迭代器就是什么泛型
		//多态     接口                                实现类对象(就是接口等于实现类 就是多态)
		Iterator<String> it = coll.iterator();
		
		
		//发现使用迭代器取出集合中元素的代码,是一个重复的过程
		//所以我么可以使用循环优化
		//不知道集合中有多少元素,使用while循环(已知 用for)
		//循环结束的条件,hasNext方法返回false
		while(it.hasNext()){
			String e = it.next();
			System.out.println(e);
		}
		System.out.println("-----------");
		//for循环比较麻烦
		for(Iterator <String> it2 = coll.iterator(); it2.hasNext();){
			String e = it2.next();
			System.out.println(e);
		}
		
		//2, 使用Iterator接口中的方法hasNext判断有没有下一个元素
//		boolean b = it.hasNext();
//		System.out.println(b);//true
		
		// 3, 使用Iterator接口中的方法next取出集合中的下一个元素
//		String s = it.next();
//		System.out.println(s);//姚明
		
		
//		b = it.hasNext();
//		System.out.println(b);//true
//		s = it.next();
//		System.out.println(s);//科比
//		
//		b = it.hasNext();
//		System.out.println(b);//true
//		s = it.next();
//		System.out.println(s);//麦迪
		
//		b = it.hasNext();
//		System.out.println(b);//true
//		s = it.next();
//		System.out.println(s);//詹姆斯
		
//		b = it.hasNext();
//		System.out.println(b);//true
//		s = it.next();
//		System.out.println(s);//艾弗森
		
	//	b = it.hasNext();
	//	System.out.println(b);//没有元素,返回false
	//	s = it.next();//没有元素,在取出元素会抛出NoSuchElementException没有元素异常
	//	System.out.println(s);
		

迭代器的实现原理
在这里插入图片描述
增强for循环
增强for循环:
底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写。 在JDK1.5版本以后出来的一个高级for循环(新特性),专门用来遍历数组和集合的,它的内部原理其实是个Iterator迭代器,所以在遍历过程中,不能
对集合中的元素进行增删操作。

Collectionextends Iterable:所以的单列集合都可以使用增强for
public interface Iterable实现这个接口允许对象成为”forach“语句的目标。

增强for循环:用来遍历集合和数组

格式: for(集合/数组的数组类型 变量名 : 集合名/数组名){
System.out.println(变量名);
}

注意事项:
新的for循环必须是遍历的目标,目标只能是Collection 或者是数组,新式for仅仅作为遍历操作出现。

public class Demo01For {
	public static void main(String[]args){
		demo02();
	}
	//使用增强for循环遍历集合
	private static void demo02(){
		ArrayList<String> list = new ArrayList<String>{};
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		for(String s : list){
			System.out.println(s);
		}
		
	}
	//使用增强for循环和遍历数组
	private static void demo01(){
		int[] arr = {1, 2, 3, 4, 5};
		for(int i : arr){
			System.out.println(i);
		}
	} 

}


本文链接: http://www.dtmao.cc/news_show_150253.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?