定义变量

首先要想实现该块代码,必须定义三个私有变量。

private Object[] elementData;该变量用来存储容器中元素的个数。

private int size;该变量表示当前容器已经存在的元素个数;

private static finnal int FAULT_CAPACITY = 10;默认当前容器允许存储的元素个数为10个。

定义构造方法

其核心代码如下所示:

public Test(int index){

if(size<0){

throw new RunTimeException('容器容量不能为负数!");

}else if(size==0){

elementData = new Object[FAULT_CAPACITY];

}else{

elementData = new Object[index];

}

}

main主方法

其核心代码如下所示:

public static void main(String[] args){

Test t = new Test(2);

}

添加元素方法

其核心代码如下所示:

public void add(E element){

if(size==elementData.length){

Object[] newArray = new Object[elementData.length+(elementData.length>>1)];

System.arraycopy(elementData,0,newArray,0,elementData.length);

elementData = newArray;

}

elementData[size++] = element;

}

判断索引是否合法方法

其核心代码如下所示:

public void checkArrage(int index){

if(index<0||index>size-1){

throw new RunTimeException("当前索引不合法!+index");

}

获得元素个数方法

其核心代码如下所示:

public int size(){

return size;

}

判断容器是否为空方法

其核心代码如下所示:

public boolean isEmpty(){

return size==0?true:false;

}

获得指定位置元素方法

其核心代码如下所示:

public E get(int index){

checkArrage(index);

return (E)elementData[index];

}

移除元素方法

其核心代码如下所示:

public void move(E element){

for(int i=0;i<size;i++){

if(element.equals(get(i))){

}

}

}

移除指定位置元素方法

其核心代码如下所示:

public void move(int index){

checkArrage(index);

int nummoved = size-index-1;

if(nummoved>0){

System.arraycopy(elementData,index+1,elementData,index,nummoved){

}

elementData[--size] = null;

}

}

设定方法

其核心代码如下所示:

public void set(int index, E element){

checkArrage(index);

elementData[index] = element;

}

字符转换方法

其核心代码如下所示:

public String toString(){

StringBulider sb = new StringBulider();

sb.append('[');

for(int i=0;i<size;i++){

sb.append(elementData[i]+",");

}

sb.setCharAt(sb.length()-1,']');

return sb.toString();

}

PS:以上方法只需要在main方法里面调用就行。

ArrrayList底层代码的实现的更多相关文章

  1. java中CRUD(增删查改)底层代码的实现

    java中CRUD(增删查改)底层代码的实现: package com.station.dao; import com.station.model.Product; import java.sql.* ...

  2. 底层代码创建GUI

    %底层代码创建GUI hf = figure(... 'Units','Normalized',... 'Color','w',... 'Position',[0.1 0.1 0.8 0.8]); h ...

  3. JAVAEE——BOS物流项目02:学习计划、动态添加选项卡、ztree、项目底层代码构建

    1 学习计划 1.jQuery easyUI中动态添加选项卡 2.jquery ztree插件使用 n 下载ztree n 基于标准json数据构造ztree n 基于简单json数据构造ztree( ...

  4. 图像的点运算----底层代码与Halcon库函数

    最基本的图像分析工具----灰度直方图.使用直方图辅助,可以实现4大灰度变换,包括线性灰度变换(灰度拉伸).灰度对数变换.灰度伽马变换.灰度分段线性变换:使用直方图修正技术,可以实现2大变换,包括直方 ...

  5. Java反射简单使用--第一次细致阅读底层代码

    1:所写的东西都经过验证,保证正确,环境jdk8,eclipse2:在例子中,尽量以生产环境中实际代码为例,那种固定值什么的没什么意义 问题: 1:想获取调用方法所需要的参数 2:参数是以json形式 ...

  6. ArrayList底层代码解析笔记

    通过底层代码可以学习到很多东西: public class ArrayList<E> extends AbstractList<E> implements List<E& ...

  7. Nova创建虚拟机的底层代码分析

    作为个人学习笔记分享.有不论什么问题欢迎交流! 在openstack中创建虚拟机的底层实现是nova使用了libvirt,代码在nova/virt/libvirt/driver.py. #image_ ...

  8. ceph 底层代码分享

    一.底层工作队列 二.对象操作 三.上下文(Context)代码分析:

  9. LinkedList底层代码解析笔记

    LinkedList是属于Sequence List,故遍历是用迭代器更快; LinkedList继承自AbstractSequenceList.实现了List及Deque接口.其实AbstractS ...

随机推荐

  1. Python(3)

    使用除法来缩减数字,使用余数法来计算个数. class Solution: def hammingWeight(self, n: int) -> int: count = 0 while Tru ...

  2. 梁国辉获Yes评分表系统3.0计算机软件著作权

    梁国辉获Yes评分表系统3.0计算机软件著作权 Liang Guohui won the Yes score system 3 computer software copyright 登记证书如下 R ...

  3. Spring5参考指南:AspectJ高级编程之Configurable

    文章目录 遇到的问题 @Configurable 原理 重要配置 遇到的问题 前面的文章我们讲到了在Spring中使用Aspect.但是Aspect的都是Spring管理的Bean. 现在有一个问题, ...

  4. SQL Server遍历表中记录的2种方法

    SQL Server遍历表一般都要用到游标,SQL Server中可以很容易的用游标实现循环,实现SQL Server遍历表中记录.本文将介绍利用使用表变量和游标实现数据库中表的遍历. 表变量来实现表 ...

  5. (PSO-BP)结合粒子群的神经网络算法以及matlab实现

    原理:           PSO(粒子群群算法):可以在全局范围内进行大致搜索,得到一个初始解,以便BP接力           BP(神经网络):梯度搜素,细化能力强,可以进行更仔细的搜索.数据: ...

  6. showModalDialog使用讲解

    基本介绍:          showModalDialog()                              (IE 4+ 支持)          showModelessDialog ...

  7. Jmeter 后置处理器

    1.JSON Extractor Json extractor 后置处理器用在返回格式为 Json 的 HTTP 请求中,用来获取返回的 Json 中的某个值.并保存成变量供后面的请求进行调用或断言等 ...

  8. RF(页面断言)

    一.RF中断言方式 title should be(断言title与预期指定的title内容相等) Open Browser https://www.baidu.com/ gc Title Shoul ...

  9. Java采用反射技术创建对象后对目标类的成员变量和成员方法进行访问

    实现: package com.ljy; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * * @Class ...

  10. System.Linq.Dynamic字符串转委托

    以前一直想着有没有一个方法能够把字符串直接转化成函数的,刚好有需求就找了下,还真有. 微软地址:https://docs.microsoft.com/en-us/previous-versions/b ...