zoukankan      html  css  js  c++  java
  • List容器案例

    案例讲解

    迭代模式

         不暴露集合的内部结构,又让外部访问集合中的数据

    package com.day1;
    
    public interface Iterator <T>{
       public  boolean  hasNEXT();//判断是否有下一个元素
       public T next();//获取下一个元素的内容
       
       
    }
    package com.day1;
    
    public class MyIterator<T> implements Iterator<T> {
        private  List<T> list=null;
        private  int  index=0;//访问到容器中数据的当前下标
         //创建一个迭代器对象的时候接受要被迭代的具体的容器对象   
        public MyIterator(List <T>list) {
            this.list = list;
            
        }
        //判断是否有下一个元素
        @Override
        public boolean hasNEXT() {
            return index<list.size();
        }
    
        //取出下一个元素
        @Override
        public T next() {
            return list.get(index++);
        }
    
    }
    package com.day1;
    
    public interface List<T> {
       public  void add(T obj);//给具体容器添加元素
       public  T get(int index);;//获取指定位置上的元素
       public  int size();//获得容器中的元素个数
       public Iterator<T> iterator();//得到具体的迭代器对象
       
    }
    package com.day1;
    
    public class ArrayList<T> implements List<T> {
        private Object[] obj=null;//声明一个Object类型的数组
        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++;//元素的个数加1
        }
        @SuppressWarnings("unchecked")
        @Override
        public T get(int index) {
            
            return (T) this.obj[index];
        }
    
        @Override
        public int size() {
        
            return size;
        }
    
        @Override
        public Iterator<T> iterator() {
            
            return new MyIterator<>(this);
        }
      
    }
    package com.day1;
    
    public class Test {
        public static void main(String[] args) {
        List<String> nameList=new ArrayList<String>();
        nameList.add("张三");
        nameList.add("李四");
        nameList.add("王五");
        Iterator<String> it=nameList.iterator();
        while(it.hasNEXT()) {
            System.out.println(it.next());
        }
        }
    }
  • 相关阅读:
    压缩感知的由来
    VS2010自动崩溃问题
    随机过程好书推荐
    Kernel PCA
    稀疏性与L1范数
    豆瓣关于计算机视觉的书评及介绍
    压缩感知测量矩阵的研究现状(转)
    信号的功率谱、能量谱、频谱的区别(转)
    vc++ & matlab 换行符号
    arg min 的含义
  • 原文地址:https://www.cnblogs.com/tanlei-sxs/p/9978957.html
Copyright © 2011-2022 走看看