案例讲解

迭代模式

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

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. 构建支持中文字体的moviepy镜像

    首先是系统的环境问题. linux 安装 moviepy需要很多依赖,安装起来费神费力.配置起来也非常麻烦,最简单的办法是直接使用他人构建好的镜像文件. 再就是字体显示问题. 镜像中的imagmagi ...

  2. svn命令获取项目中被忽略文件情况

    第一步.通过终端进入项目目录下第二步.运行命令svn pg svn:ignore -R

  3. python-基础-基础知识-变量-选择-循环

    1 基础知识 1.1 注释的分类 1.2 变量以及类型 变量定义 num1 = 100 #num1就是一个变量,就好一个小菜篮子 num2 = 87 #num2也是一个变量 result = num1 ...

  4. 关于hive表同步类型问题

    今天华为做实施的时候发现kylin做刷cube的时候发现源表数据类型不适合刷到kylin提供查询接口.问了下同事发现一个比较简单的解决办法. 源表是String类型,做hive视图可以做个hive表提 ...

  5. HBase底下的存储机制

    Split机制:可以理解为HDFS上Block一分二的情况.每个Table一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,Hregion就会等分会两个新的 ...

  6. DAO设计模式总结

    1.DAO(Data Access Object,数据访问对象),主要的功能是用于进行数据操作的,在程序的标准开发框架中属于数据层的操作. 数据开发结构流程: 资源层是数据库的操作层,里面可以进行各种 ...

  7. 关于CE的反思

    当你注视着你的分数, 眼眶倏地猛睁. 不会做的题血红一片, 认真做了的题一点墨蓝. 你知道, 你CE了, 你挂了, 你倒数第一了, 你当场去世了. 两小时的努力付诸东流, 线段树的碎片历历在目. 思考 ...

  8. Linux图形界面安装卸载,与命令界面之间的转换

    1.图形界面与命令界面之间的转换 软切换: ctrl+alt+F6进入命令行模式,ctrl+alt+F1进入图形界面,(有些情况下不管用) 注意: 该方法转为命令行界面后图形界面依然占据着系统资源. ...

  9. 关于在页面得到的servlet验证码总是上一次保存在session中的

    在网上找到一份servlet产生验证码的代码,经过测试,发现在页面通过session.getAttribute()方法得到的验证码总是上一次保存在session中的,这样,它总比页面实际的验证码晚一拍 ...

  10. jsp必填项加红色星号

    <th><font color=red>*</font>文字:</th>