Collection的迭代器实现
来源:互联网 发布:java 判断字段类型 编辑:程序博客网 时间:2024/06/02 04:21
集合的遍历方法
List<String> list = new ArrayList<String>();list.add("aaa");list.add("bbb");list.add("ccc");方法一:超级for循环遍历for(String attribute : list) { System.out.println(attribute);}方法二:对于ArrayList来说速度比较快, 用for循环, 以size为条件遍历:for(int i = 0 ; i < list.size() ; i++) { system.out.println(list.get(i));}方法三:集合类的通用遍历方式, 从很早的版本就有, 用迭代器迭代Iterator it = list.iterator();while(it.hasNext()) { System.ou.println(it.next);}
设计自己的Iterator迭代器
- 设计自己的迭代器接口功能包括哪些功能
/** * Created by shiqiang on 2016/12/22. */public interface Iterator { //前移 Object previous(); //后移 Object next(); //是否有下一个元素 boolean hasNext(); //取得第一个元素 Object first();}
- 实现该接口的迭代器
/** * Created by shiqiang on 2016/12/22. */public class MyIterator implements Iterator { private MyCollection myCollection; //私有化一个变量 private int pos = -1; //将集合传递进来 public MyIterator(MyCollection myCollection) { this.myCollection = myCollection; } @Override public Object previous() { //前移将pos位置减一返回集合中的元素 if (pos > 0){ pos -- ; } return myCollection.get(pos); } @Override public Object next() { //后移将pos位置加一返回集合中的元素 if (pos < myCollection.size() - 1){ pos ++ ; } return myCollection.get(pos); } @Override public boolean hasNext() {// 是否还有下一个元素,有返回true,否则为false if (pos < myCollection.size() - 1){ return true ; }else{ return false ; } } @Override public Object first() { //返回集合中第一个位置的值 pos = 0 ; return myCollection.get(pos); }}
- 集合的接口:注意需要哪些数据,在MyIterator中需要 myCollection.get(pos),myCollection.size() ,所以接口中应该此方法
/** * Created by shiqiang on 2016/12/22. */public interface Collection { //集合的迭代器接口 public Iterator iterator(); //得到集合中的元素 public Object get(int i); //得到集合的长度 public int size();}
- 实现该接口的集合
/** * Created by shiqiang on 2016/12/22. */public class MyCollection implements Collection { /* 由于List的add方法比较麻烦,所以这边只有固定数组来标示集合~List.add实现思路如下: List集合的策略,初始一个数组长度,达到长度时new一个新数组, 新数组的长度是原数组长度的二倍,然后把原数组的内容复制到新数组, 再将新的元素加到数组中。其中肯定有一个变量来记录最后一个元素所在的数组下标。 */ public String string[] = {"A","B","C","D","E"}; @Override public Iterator iterator() { //将此集合传递进去,就像MVP模式一样的 return new MyIterator(this); } @Override public Object get(int i) { return string[i]; } @Override public int size() { return string.length; }}
- 调用自己的集合跟迭代器遍历集合取出数据
MyCollection myCollection = new MyCollection();//初始化自己的iterator,注意myCollection.iterator()返回的是 return new //MyIterator(this);实现了Iterator接口,父类指向子类,下面调用的是子类的方法! Iterator iterator = myCollection.iterator();// System.out.println(iterator.first().toString() + "nimei"); while (iterator.hasNext()){ System.out.println(iterator.next() + "我是:"); }
0 0
- Collection的迭代器实现
- Java-----Collection 实现的ArrayList
- Java基础-Collection之Set的实现
- Collection标签实现集合类的封装
- 迭代器-Collection
- Java中常用数据结构的实现类 Collection和Map
- Java中常用数据结构的实现类 Collection和Map
- Collection接口和Map接口的主要实现类
- Java中常用数据结构的实现类 Collection和Map
- Collection接口和Map接口的主要实现类
- Java中常用数据结构的实现类 Collection和Map
- Java中常用数据结构的实现类 Collection和Map
- Collection接口和Map接口的主要实现类
- Java中常用数据结构的实现类 Collection和Map
- Summary of Implementations(Collection的实现总结)
- Mybatis中collection实现一对多的问题
- java collection 之用法,登陆注册功能的实现
- Java中常用数据结构的实现类 Collection和Map
- openGL error: undefined reference to `_imp___ZN9QGLWidgetC2EP7QWidgetPKS_6QFlagsIN2Qt10WindowTypeEE'
- 开发:Django(1)
- Java 线程面试问
- Oracle约束的维护
- RecyclerView之ItemDecoration由浅入深
- Collection的迭代器实现
- LeetCode P318 Maximum Product of Word Lengths
- 32位位图与24位位图互相转换
- Vue 2.0初学后个人总结及分享
- boost智能指针
- html标签
- 学习,工作,生活场景与纪实——理论与实际
- beautifulsoup提取所有<a>标签内容 Python
- 安卓中Activity的onStart()和onResume()