定义变量

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

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. php json接口demo

    <?php class Student { public $no; public $username; public $password; } $student=new Student(); $ ...

  2. 构造最短程序打印自身的 MD5

    一,介绍 比赛题目很简单:构造一个程序,在 stdout 上打印出自身的 MD5,程序越短越好.按最终程序文件大小字节数排名,文件越小,排名越靠前. 只能使用 ld-linux-x86-64.so, ...

  3. Spring5参考指南:SpringAOP简介

    文章目录 AOP的概念 Spring AOP简介 Spring AOP通知类型 写过程序的都知道OOP即面向对象编程. 从最开始的面向过程编程,到后面的面向对象编程,程序的编写方式发生了重大的变化,面 ...

  4. 单源最短路问题--朴素Dijkstra & 堆优化Dijkstra

    许久没有写博客,更新一下~ Dijkstra两种典型写法 1. 朴素Dijkstra     时间复杂度O(N^2)       适用:稠密图(点较少,分布密集) #include <cstdi ...

  5. vue 跳转并传参,实现数据实时更新

    原文链接:点我 比如我现在在页面A跳转到页面B,A中的router-link :to={path:’B’,params:{id:’5’}} 求助:在页面B中的mounted生命周期函数中使用this. ...

  6. The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 B so easy

    题目链接:https://nanti.jisuanke.com/t/41384 这题暴力能过,我用的是并查集的思想,这个题的数据是为暴力设置的,所以暴力挺快的,但是当他转移的点多了之后,我觉得还是我这 ...

  7. P4768 [NOI2018]归程(kruskal 重构树)

    洛谷P4768 [NOI2018]归程 LOJ#2718.「NOI2018」归程 用到 kruskal 重构树,所以先说这是个啥 显然,这和 kruskal 算法有关系 (废话 这个重构树是一个有点权 ...

  8. <学习笔记: Django之初见>

    Django 1. web框架介绍 具体介绍Django之前,必须先介绍WEB框架等概念. web框架: 别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子. ...

  9. 精通awk系列文章

    精通awk系列文章 我录制了两个awk相关的视频教程: Awk经典实战案例精讲 精通awk精品课程:awk从入门到精通 1.安装新版本的gawk 2.本教程测试所用示例文件 3.铺垫知识:读取文件的几 ...

  10. JWT安全问题

    Json Web Tokens 在线工具网站:https://jwt.io/ python 用到的库 jwt  // pip install pyjwt JWTCrack key   // git c ...