自定义一个迭代器并通过main函数测试成功
2016-02-26 08:13
260 查看
public class MyIterator {
//测试主函数
public static void main(String[] args) {
List<String > nameList=new ArrayList<String>();
nameList.add("zhangsan");
nameList.add("lisi");
nameList.add("wangwu");
nameList.add("zhaoliu");
IIterator<String> it=nameList.iterator();
while (it.hashNext()) {
String string = (String ) it.next();
System.out.println(string);
}
System.out.println("<------------分割线------------->");
for(int i=0;i<nameList.size();i++){
System.out.println(nameList.get(i));
}
}
}
// 迭代器角色接口
interface IIterator<T> {
public boolean hashNext();// 判断是否有下一个元素
public T next();// 获取下一个元素的内容
}
// 创建一个类来实现自定义IIterator这个接口
class MyIterator1<T> implements IIterator<T> {
private List<T> list = null;// MyIterator1有一个List接口的属性
private int index = 0;// 访问到容器中元素的
4000
当前下标
// 创建一个迭代器对象的时候接收要被迭代的具体的容器对象
public MyIterator1(List<T> list) {
this.list = list;
}
// 实现接口方法
// 判断是否有下一个元素
@Override
public boolean hashNext() {
return index < list.size();
}
// 取出下一个元素
@Override
public T next() {
return (T) list.get(index++);
}
}
// 定义一个容器接口
interface List<T> {
public void add(T obj);// 给具体的容器添加元素
public T get(int index);// 获取指定位置上的元素
public int size();// 获得容器中的元素个数
public IIterator<T> iterator();// 得到具体的迭代器对象
}
// 定义一个泛型类实现List接口
class ArrayList<T> implements List<T> {
private Object[] obj = null;// 声明一个Objiect类型的数组
private int index;// 数组的下标
private int size;// 记录数组中元素的个数
public ArrayList () {
obj=new Object[10];//给数组设定一个值是固定的,不让数组超过数组的容量
index=0;
size=0;
}
@Override
public void add(T obj) {
this.obj[index++]=obj;//把数据存放到数组中
size++;//元素的个数加一
}
@SuppressWarnings("unchecked")//添加一个压制警告就不会出现警告,处女座情节
@Override
public T get(int index) {
return (T) this.obj[index];
}
@Override
public int size() {
return size;
}
@Override
public IIterator<T> iterator() {
return new MyIterator1<T>(this);
}
}
//测试主函数
public static void main(String[] args) {
List<String > nameList=new ArrayList<String>();
nameList.add("zhangsan");
nameList.add("lisi");
nameList.add("wangwu");
nameList.add("zhaoliu");
IIterator<String> it=nameList.iterator();
while (it.hashNext()) {
String string = (String ) it.next();
System.out.println(string);
}
System.out.println("<------------分割线------------->");
for(int i=0;i<nameList.size();i++){
System.out.println(nameList.get(i));
}
}
}
// 迭代器角色接口
interface IIterator<T> {
public boolean hashNext();// 判断是否有下一个元素
public T next();// 获取下一个元素的内容
}
// 创建一个类来实现自定义IIterator这个接口
class MyIterator1<T> implements IIterator<T> {
private List<T> list = null;// MyIterator1有一个List接口的属性
private int index = 0;// 访问到容器中元素的
4000
当前下标
// 创建一个迭代器对象的时候接收要被迭代的具体的容器对象
public MyIterator1(List<T> list) {
this.list = list;
}
// 实现接口方法
// 判断是否有下一个元素
@Override
public boolean hashNext() {
return index < list.size();
}
// 取出下一个元素
@Override
public T next() {
return (T) list.get(index++);
}
}
// 定义一个容器接口
interface List<T> {
public void add(T obj);// 给具体的容器添加元素
public T get(int index);// 获取指定位置上的元素
public int size();// 获得容器中的元素个数
public IIterator<T> iterator();// 得到具体的迭代器对象
}
// 定义一个泛型类实现List接口
class ArrayList<T> implements List<T> {
private Object[] obj = null;// 声明一个Objiect类型的数组
private int index;// 数组的下标
private int size;// 记录数组中元素的个数
public ArrayList () {
obj=new Object[10];//给数组设定一个值是固定的,不让数组超过数组的容量
index=0;
size=0;
}
@Override
public void add(T obj) {
this.obj[index++]=obj;//把数据存放到数组中
size++;//元素的个数加一
}
@SuppressWarnings("unchecked")//添加一个压制警告就不会出现警告,处女座情节
@Override
public T get(int index) {
return (T) this.obj[index];
}
@Override
public int size() {
return size;
}
@Override
public IIterator<T> iterator() {
return new MyIterator1<T>(this);
}
}
相关文章推荐
- MFC学习笔记之三(粒子系统+怪物简单AI+碰撞检测)
- MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划
- Hermes Container Hack Day参赛回顾
- Thinking in "inside Einstein mind" to AI
- 219. Contains Duplicate II
- UVA 442(p141)----Matrix Chain Multiplication
- UVA 253(p97)----Cube painting
- 研究一下TForm.WMPaint过程(也得研究WM_ERASEBKGND)——TForm虽然继承自TWinControl,但是自行模仿了TCustomControl的全部行为,一共三种自绘的覆盖方法,比TCustomControl还多一种
- TPanel的默认颜色存储在dfm中,读取后在Paint函数中设置刷子的颜色,然后填充整个背景
- LightOJ 1236 Pairs Forming LCM(唯一分解定理)
- IielgnairTs'lacsaP.119
- poll_wait阻塞/唤醒
- elgnairTs'lacsaP.118
- HA(高可用)集群之AIS(corosync),高可用httpd+NFS
- TWinControl.DefaultHandler里的CallWindowProc(FDefWndProc)还挺有深意的,TButton对WM_PAINT消息的处理就是靠它来处理的(以前不明白为什么总是要调用inherited,其实就是没有明白TWinControl.DefaultHandler的真正用处,而且还很有用)
- Rails铁轨(栈)
- hdu 1789 Doing Homework Again!
- MessagingTimeout: Timed out waiting for a reply to message ID
- main()函数
- Failed to download samples index, please check your connection and try again 解决