Java学习----集合迭代器
来源:互联网 发布:论文中英文翻译软件 编辑:程序博客网 时间:2024/05/22 17:24
1、 迭代器
任何容器类,都必须有某种方式可以将东西放进去,然后由某种方式将东西取出来。毕竟,存放事物是容器最基本的工作。对于ArrayList,add()是插入对象的方法,而get()是取出元素的方式之一。ArrayList很灵活,可以随时选取任意的元素,或使用不同的下标一次选取多个元素。
如果从更高层的角度思考,会发现这里有一个缺点:要使用容器,必须知道其中元素的确切类型。初看起来这没有什么不好的,但是考虑如下情况:如果原本是ArrayList ,但是后来考虑到容器的特点,你想换用Set ,应该怎么做?或者你打算写通用的代码,它们只是使用容器,不知道或者说不关心容器的类型,那么如何才能不重写代码就可以应用于不同类型的容器?
所以迭代器(Iterator)的概念,也是出于一种设计模式就是为达成 此目的而形成的。所以Collection不提供get()方法。如果要遍历Collectin中的元素,就必须用Iterator。
迭代器(Iterator)本身就是一个对象,它的工作就是遍历并选择 集合序列中的对象,而客户端的程序员不必知道或关心该序列底层的结构。此外,迭代器通常被称为“轻量级”对象,创建它的代价小。但是,它也有一些限制,例如,某些迭代器只能单向移动。
Collection 接口的 iterator() 方法返回一个 Iterator。Iterator 和您可能已经熟悉的 Enumeration 接口类似。使用 Iterator 接 口方法,您可以从头至尾遍历集合,并安全的从底层 Collection 中除去元素。
package com.thread;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class IteratorDemo { public static void main(String[] args) { Collection collection = new ArrayList(); collection.add("s1"); collection.add("s2"); collection.add("s3"); Iterator iterator = collection.iterator();//得到一个迭代器 while (iterator.hasNext()) {//遍历 Object element = iterator.next(); System.out.println("iterator = " + element); } if(collection.isEmpty()) System.out.println("collection is Empty!"); else System.out.println("collection is not Empty! size="+collection.size()); Iterator iterator2 = collection.iterator(); while (iterator2.hasNext()) {//移除元素 Object element = iterator2.next(); System.out.println("remove: "+element); iterator2.remove(); } Iterator iterator3 = collection.iterator(); if (!iterator3.hasNext()) {//察看是否还有元素 System.out.println("还有元素"); } if(collection.isEmpty()) System.out.println("collection is Empty!"); //使用collection.isEmpty()方法来判断 } }
运行结果:
iterator = s1
collection is not Empty! size=3
remove: s1
remove: s2
remove: s3
还有元素
collection is Empty!
可以看到,Java的Collection的Iterator 能够用来:
1) 使用方法 iterator() 要求容器返回一个Iterator .第一次调 用Iterator 的next() 方法时,它返回集合序列的第一个元素。
2) 使用next() 获得集合序列的中的下一个元素。
3) 使用hasNext()检查序列中是否元素。
4) 使用remove()将迭代器新返回的元素删除。
需要注意的是:方法删除由next方法返回的最后一个元素,在每次调用next时,remove方法只能被调用一次 。
大家看,Java 实现的这个迭代器的使用就是如此的简单。Iterator(跌代器)虽然功能简单,但仍然可以帮助我们解决许多问题,同时针对List 还有一个更复杂更高级的ListIterator。
2、List
List 就是列表的意思,它是Collection 的一种,即继承了 Collection 接口,以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。List 是按对象的进入顺序进行保存对象,而不做排序或编辑操作。它除了拥有Collection接口的所有的方法外还拥有一些其他的方法。
面向位置的操作包括插入某个元素或 Collection 的功能,还包括获取、除去或更改元素的功能。在 List 中搜索元素可以从列表的头部或尾部开始,如果找到元素,还将报告元素所在的位置。
常用实现:ArrayList和LinkedList
ArrayList 提供快速的基于索引的成员访问,对尾部成员的增加和删除支持较好。
LinkedList 对列表中任何位置的成员的增加和删除的支持都较好,但是基于索引的成员访问支持性能较差。
二者的成员可为任意 Object子类的对象。
LinkedList里面的方法,可以把它当做一个堆栈、队列或者其他面向断点的数据结构使用。
使用LinkedList来实现简单的队列的例子
public static void main(String args[]) { LinkedList queue = new LinkedList(); queue.addFirst("Bernadine"); queue.addFirst("Elizabeth"); queue.addFirst("Gene"); queue.addFirst("Clara"); System.out.println(queue); queue.removeLast(); System.out.println(queue); }
运行结果:
[Clara, Elizabeth, Gene, Elizabeth, Bernadine]
[Clara, Elizabeth, Gene]
注意:List里面的元素是允许重复的,Set里面的元素是不允许重复的。
- Java学习----集合迭代器
- 黑马程序员--Java学习日记之集合(集合体系&迭代器)
- java学习第34天,集合 迭代器
- 学习java集合框架
- Java学习之集合
- java学习资料集合
- Java集合学习笔记
- JAVA学习笔记--集合
- Java学习---集合框架
- java学习笔记--集合
- JAVA集合学习笔记
- Java 集合类学习
- Java集合类学习
- java集合学习记录
- java集合学习一
- java基础学习-集合
- java 集合学习
- Java学习笔记-集合
- ——黑马程序员——OC中集合对象的内存管理及copy的用法
- 学Android---ListView
- 空格 在不同浏览器中显示距离不一致问题解决方法
- 终端分屏软件 TMUX小记
- 遍历目录修改文件后缀名
- Java学习----集合迭代器
- 一个经典例子让你彻彻底底理解java回调机制
- Arcgis中显示执行时间的两种方法
- 一周学习工作总结:
- hdu 2586 How far away ?(LCA)
- Android之Lru缓存
- 欢迎使用CSDN-markdown编辑器
- 类工厂方法
- CYC-UITableViewCell的动态高度