迭代器Iterator接口
来源:互联网 发布:linux mysql 源码安装 编辑:程序博客网 时间:2024/06/08 12:20
集合框架中遍历list是比较方便的,我们只需有一个for循环即可遍历list中的所有元素,因为list是有序的,而set是无序的,那么如何遍历set集合呢?就需要用到Iterator对象了,Iterator对象称作迭代器,来实现对容器内元素的遍历。
Iterator接口包含三个方法,hasNext(),next(),remove() 下面解释来自API JDK1.6
集合Collection实现了Iterator接口
public interface Collection<E> extends Iterable<E>
所有实现了Collection接口的容器类都有一个iterator方法用来返回一个实现Iterator接口的对象
set集合中使用迭代器遍历元素
//new一个新set集合Set set=new HashSet();//往集合中添加元素set.add("123");set.add("qaz");set.add("wsx");//通过迭代器遍历集合for(Iterator iter=set.iterator();iter.hasNext();){String str=(String)iter.next();System.out.println(str);}
输出结果就是,123 qaz wsx
当然list也可以用迭代器遍历
//new一个新list集合List list=new ArrayList();//往集合中添加元素list.add("123");list.add("qaz");list.add("wsx");//通过for循环遍历for(int i=0;i<list.size;i++){System.out.println(list.get(i));}//通过迭代器遍历集合for(Iterator iter=list.iterator();iter.hasNext();){String str=(String)iter.next();System.out.println(str);//输出同上}
在Map中使用迭代器遍历也是一样的道理,代码也基本同上。
------------------------------------------------------------后续--------------------------------------------------------------
remove方法:我们都知道remove方法是需要在next方法之后使用的,并且只能使用一次,如果你连续使用两次此方法是会报错的,因为第一次使用的时候元素已经被删除了,第二次再删就已经没有东西可删了,就会报错。该方法会移除迭代器返回的最后一个元素,代码示例:
//new一个新set集合Set set=new HashSet();//往集合中添加元素set.add("123");set.add("qaz");set.add("wsx");//通过迭代器遍历集合for(Iterator iter=set.iterator();iter.hasNext();){String str=(String)iter.next();if(str.equals("qaz")){iter.remove();}}for(Iterator iter=set.iterator();iter.hasNext();){String str=(String)iter.next();System.out.println(str);}
输出结果为:123,wsx
如果我们不使用remove方法,而是直接更改集合元素的值,比如 str="qqq";
即使这样,集合中的元素也不会改变的,在传递参数的时候,有值传参和引用传参,前者是直接把元素的值传过来,而后者是把地址传过来,在引用传参的时候才会相应的改变元素的值,而我们这里的迭代器是值传参,所以不会改变。
- 迭代器Iterator接口
- 自定义迭代器 iterator接口
- PHP:迭代器(Iterator)接口实现
- PHP Iterator(迭代器)接口
- Iterable接口和Iterator迭代器
- 关于Iterator接口(迭代器)
- Iterator 接口
- 接口 Iterator
- Iterator 接口
- Iterator接口
- Iterator接口
- Iterator接口
- 接口Iterator
- Iterator接口
- Iterator接口
- Iterator接口
- Iterator接口
- Iterator接口
- 多线程系列:一介绍
- 使用svn时,报证书验证错误Error validating server certificate for
- 内建与外联css与js的优劣
- Land oj 1611 - Null (水)
- python编译错误的积累
- 迭代器Iterator接口
- PHP入门学习笔记之—— PHP 类与对象 (下)
- 从工程师到Leader成长之路
- C. Hard Process
- C 【函数 递归】
- SQLiteOpenHelper类的简化操作数据库(api查询方式)
- hdu1098(基础)
- 1002. A+B for Polynomials (25)
- 统计文本中某值字段数量-cat-awk-sort-uniq-c