学习集合的原理,这是一个很简单的代码,没有索引下标越界判断,异常处理等,不够健壮,后面会继续更新完善代码.....

只是入门学习一下

package my;

/***
* 自己动手编写一个ArrayList类
* @author 刘诗华
*
*/
public class ArrayList { //集合默认初始化长度为10个元素
private final static int DEFAULT_CAPACITY = 10; //当前集合中存储了多少个元素
private int size=0; //存储对象容器
private Object[] ele=null; //无参数构造器
public ArrayList()
{
this(DEFAULT_CAPACITY);
}
//带参数构造器
public ArrayList(int initialCapacity)
{
ele=new Object[initialCapacity];
} //添加元素
public void add(Object e)
{
ele[size]=e;
size++;
} //获取指定索引元素
public Object get(int index)
{
return ele[index];
} //获取元素第一次在集合出现的索引位置
public int indexOf(Object o)
{
for(int index=0;index<size;index++)
{
if(o.equals(ele[index]))
return index;
}
return -1;
} //查询元素最后一次出现的索引
public int lastIndexOf(Object o)
{
int len=size-1;
for(int index=len;index!=-1;index--)
{
if(o.equals(ele[index]))
return index;
}
return -1;
} //替换元素
public void set(int index, Object element)
{
ele[index]=element;
} //返回集合存储元素长度
public int size()
{
return this.size;
} //判断是否为空集合
public boolean isEmpty()
{
return size == 0;
} //清空集合所有元素
public void clear()
{
ele=new Object[DEFAULT_CAPACITY];
size=0;
} //判断集合是否包含某个元素
public boolean contains(Object o)
{
int len=size-1;
for(int index=len;index != -1; index--)
{
if(o.equals(ele[index]))
return true;
}
return false;
} //删除某个元素
public void remove(Object o)
{
int index=this.indexOf(o); for(int i=index;index<=size-1;index++)
{
ele[index]=ele[index+1];
ele[index+1]=null;
size--;
}
} //删除指定索引位置的元素
public void remove(int index)
{
for(int i=index;index<=size-1;index++)
{
ele[index]=ele[index+1];
ele[index+1]=null;
size--;
}
} @Override
public String toString() { if(ele == null)
return "null"; if(size ==0)
return "[]"; StringBuilder sb=new StringBuilder();
sb.append("[");
for(int index=0;index<size;index++)
{
sb.append(ele[index]);
if(index != size-1)
sb.append(",");
}
sb.append("]");
return sb.toString();
} }

1-自己动手编写ArrayList集合的更多相关文章

  1. Java集合 -- ArrayList集合及应用

    JAVA集合 对象数组 集合类之ArrayList 学生管理系统 斗地主案例 NO.one 对象数组 1.1 对象数组描述 A:基本类型的数组:存储的元素为基本类型 int[] arr={1,2,3, ...

  2. 【代码笔记】Java常识性基础补充(二)——数组、ArrayList集合、ASCII编码、 eclipse基础操作、eclipse调试、eclipse项目导入、eclipse快捷键

    1.0 如何定义数组以及访问数组中的元素,如下所示.ArrayDemo01.java public class ArrayDemo01 { public static void main(String ...

  3. Java基础语法(自定义类、ArrayList集合)

    Java基础语法 今日内容介绍 u 自定义类 u ArrayList集合 第1章 引用数据类型(类) 1.1 引用数据类型分类 提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类 ...

  4. Java 之 ArrayList 集合

    一.ArrayList 概述 java.util.ArrayList  是 大小可变的数组 的实现,存储在内的数据称为元素.该类是一个 集合类(容器),可以让我们更便捷的存储和操作对象数据. 该类可以 ...

  5. java基础: ArrayList集合应用, ArrayList增删改查详解,综合java基础实现学生管理系统,

    1.ArrayList 集合和数组的区别 : 共同点:都是存储数据的容器 不同点:数组的容量是固定的,集合的容量是可变的 1.1 -ArrayList的构造方法和添加方法 public ArrayLi ...

  6. 设计模式(十七)——迭代器模式(ArrayList 集合应用源码分析)

    1 看一个具体的需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系.如图: 2 传统的设计方案(类图) 3 传统的方式的问题分析 ...

  7. C#语言基础——集合(ArrayList集合)

    集合及特殊集合 集合的基本信息: System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表.队列.位数组.哈希表和字典)的集合.System.Collections ...

  8. OWIN系列之自己动手编写中间件

    一.前言 1.基于OWIN的项目摆脱System.Web束缚脱颖而出,轻量级+跨平台,使得ASP.NET应用程序只需依赖这个抽象接口,不用关心所运行的Web服务器. 2.OWIN.dll介绍 使用反编 ...

  9. ArrayList集合 、特殊集合

    一.ArrayList集合 集合内可以放不同类型的元素 另:object类型为所有数据类型的基类 添加元素:.add(); 清空集合:al.clear(); 克隆集合:.clone(); 判断是否包含 ...

随机推荐

  1. day5 python学习

    本日主要讲了列表的一些操作 1.列表的增 ret=['wang','taibai','alxe','ritian'] ret.append("wusir") print(ret) ...

  2. codeblock设置快捷键

    第一步: 第二步: 第三步:  格式化代码设置: 在代码框里点右键,按Format use Astyle就会自动代码格式化了 但是它默认的风格是大括号另起一行,很不习惯,实际上是可以改的 1.Sett ...

  3. 程序设计实践 (Brian W. Kernighan Rob Pike 著)

    第1章 风格 1.1 名字 1.2 表达式和语句 1.3 一致性和习惯用法 1.4 函数宏 1.5 神秘的数 1.6 注释 1.7 为何如此费心 第2章 算法与数据结构 2.1 检索 2.2 排序 2 ...

  4. Mysql5.6 自动化部署

    主机环境:Centos6.5 前提: 1. 配置yum源 2. 移除系统自带的mysql 3. 删除原先的mysql用户 4. 使用mysql二进制安装包:https://dev.mysql.com/ ...

  5. navicat外键设置

    https://blog.csdn.net/qq_32486599/article/details/73497810

  6. Jmeter关于断言

    本文摘自:一颗糖果   https://www.cnblogs.com/linglingyuese/p/linglingyuese-five.html 1.断言持续时间(Duration to Ass ...

  7. Zookeeper watcher机制

    一.watcher机制 1.针对每个节点的操作,都会有一个监督者-> watcher 2.当监控的某个对象(znode)发生了变化,则触发watcher事件 3.zk中的watcher是一次性的 ...

  8. SourceInsight宏插件1(非常好用,强力推荐)

    对于一直使用sourceinsight编辑C/C++代码的工程师们,sourceinsight是一个非常好用的编辑工具可以任意定位,跳转,回退,本人一直使用该工具做C/C++开发,sourceinsi ...

  9. 【java】for循环嵌套

    循环嵌套:外循环控制行数,内循环控制每一行的列数,也就是每一行的元素个数 需求:打印出9*9的乘法表 class Demo { public static void main(String[] arg ...

  10. 分布式超级账本Hyperledger里zookeeper的作用

    Zookeeper是一种在分布式系统中被广泛用来作为:分布式状态管理.分布式协调管理.分布式配置管理.和分布式锁服务的集群.kafka增加和减少服务器都会在Zookeeper节点上触发相应的事件kaf ...