案例讲解

迭代模式

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

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());
}
}
}

List容器案例的更多相关文章

  1. 在kubernetes运行一个容器案例

    1. 检查kubernetes 组件是否正常运行. [root@c720120 ~]# kubectl get cs NAME                 STATUS    MESSAGE    ...

  2. Docker容器案例:应用 Mysql

    原创 杜亦舒   前阶段体验 Mysql 的新版本 5.7.13,由于机器里已经有 Mysql了,再安装另一个版本会有一些麻烦,为了简单,便使用 Docker 容器来安装 可能有人会认为没必要,在一台 ...

  3. Map容器案例

    案例讲解  --统计字符串出现的次数 package com.date; import java.util.HashMap; import java.util.Map; import java.uti ...

  4. windows container (docker) 容器资料笔记

    背景 业务需求:简化公司私有云,公有云的部署,尝试寻找更好的,更优化的技术方案替换现有的虚拟机部署方案. 技术背景: .net Docker 学习资料 Docker中文社区: http://www.d ...

  5. C++进阶 STL(1) 第一天 [容器,算法,迭代器] string容器 vector容器 deque容器

    课程大纲 02实现基本原理 容器,算法,迭代器 教室:容器 人:元素 教室对于楼:容器 序列式容器: 容器元素在容器中的位置是由进入容器的时间和地点来决定 序列式容器 关联式容器: 教室中 按年龄排座 ...

  6. Spring 框架基础(03):核心思想 IOC 说明,案例演示

    本文源码:GitHub·点这里 || GitEE·点这里 一.IOC控制反转 1.IOC容器思想 Java系统中对象耦合关系十分复杂,系统的各模块之间依赖,微服务模块之间的相互调用请求,都是这个道理. ...

  7. 《Spring 手撸专栏》第 2 章:小试牛刀(让新手能懂),实现一个简单的Bean容器

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 上学时,老师总说:不会你就问,但多数时候都不知道要问什么! 你总会在小傅哥的文章前言 ...

  8. centos7 docker安装详解

    查看内核和操作系统版本[root@prod3 ~]# uname -r3.10.0-327.el7.x86_64[root@prod3 ~]# cat /etc/redhat-release Cent ...

  9. 【实战分享】又拍云 OpenResty / Nginx 服务优化实践

    2018 年 11 月 17 日,由 OpenResty 主办的 OpenResty Con 2018 在杭州举行.本次 OpenResty Con 的主题涉及 OpenResty 的新开源特性.业界 ...

随机推荐

  1. python-基础-练习和面试题

    给程序传参数 import sys print(sys.argv) 运行结果: 列表推导式 所谓的列表推导式,就是指的轻量级循环创建列表 1. 基本的方式 2. 在循环的过程中使用if 3. 2个fo ...

  2. Hibernate-HQL-Criteria-查询优化

    1 查询总结 oid查询-get 对象属性导航查询 HQL Criteria 原生SQL 2 查询-HQL语法 2.1 基础语法 2.2 进阶语法 排序 条件 分页 聚合 投影 多表查询 SQL HQ ...

  3. openCV抠图实验

    #include "pch.h" #include <opencv2/core/core.hpp> #include "opencv2/imgproc/img ...

  4. vue-cli+webpack搭建简单的vue项目框架

    0.先去官网下载安装nodeJS 1.在cmd中输入命令 node -version    若出现node版本号 则安装成功 2.通过命令:cd 文件夹名     进入某具体文件夹后进行如下命令操作: ...

  5. ubuntu 已安装 post-installation 脚本 返回错误状态 1

    1.$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old //现将info文件夹更名 2.$ sudo mkdir /var/lib/dpkg/inf ...

  6. Mybatis insert返回主键ID

    Mybatis insert语句书写 <insert id="insertSelective" useGeneratedKeys="true" keyPr ...

  7. hashhMap

    # hashMap原理 # HashMap是一个双列集合,是线程不安全的.以key.value的形式储存值.底层是由数组+链表+红黑树组成的,数组是HashMap的主干,链表则是主要为了解决哈希冲突而 ...

  8. NLog系列之NLong.config变量配置篇

    $ {cached} -  将缓存应用于另一个布局输出. $ {db-null} - 为数据库渲染DbNull $ {exception} - 通过调用Logger方法之一提供的异常信息 $ {lev ...

  9. JAVA短信验证码 工具类

    MsgCodeUtil.java package com.hg.util; import com.soyea.enums.ResultEnum; import com.soyea.exception. ...

  10. Lab2 新增的细节

    entry.S 新增加了这个入口函数 bootloader 加载完成后 将执行 kern_entry 而非lab1 中的kern_init defs.h 使用了 ({})宏定义的方式,并且执行了一行定 ...