定义变量

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

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. tp5--相对路径和绝对路径

    首先,我们要先明白相对路径和绝对路径的理论: 绝对路径:是从盘符开始的路径,形如C:\windows\system32\cmd.exe相对路径:是从当前路径开始的路径,假如当前路径为C:\window ...

  2. Ubuntu 搜索文件

    1.whereis 文件名 特点:快速,但是是模糊查找 例如: whereis php #会把php,php.ini,php.*所在的目录都找出来. 2.find / -name 文件名 特点:准确, ...

  3. Express 文档(常见问题)

    常见问题 我该如何构建我的应用程序? 这个问题没有明确的答案,答案取决于你的应用程序规模和所涉及的团队,为了尽可能灵活,Express在结构方面没有做出任何假设. 在你喜欢的任何目录结构中,路由和其他 ...

  4. Qt之QListWidget:项目的多选与单选设置

    2019独角兽企业重金招聘Python工程师标准>>> #include "widget.h" #include <QApplication> #in ...

  5. 提高Web服务器并发响应的经历

    1 前言 ---------- 最近一直在维护一个线上运行的旧系统,系统本身的问题很多,然而又有大量客户准备试用.之前一直存有侥幸心理,希望系统能神奇的顶过这段时间,但这个蜗牛般的系统残忍的告诉我们- ...

  6. USACO Training Section 1.1 坏掉的项链Broken Necklace

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  7. RF(控制台及日志输出中文乱码)

    1.查看 ride 版本,我这里是 RIDE 1.7.4.1 running on Python 3.6.0. 2.修改文件 D:\python3.6\Lib\site-packages\roboti ...

  8. andorid jar/库源码解析

    前言 本篇作为开篇,会大体上说明,需要解读源码的,类库,或者jar. 序 原本,类库和jar的系列准备写到逆向系列课程的,但是那个东西,在写了两篇,就没有后续了,现在也不知道从哪里开始了, 只能等后期 ...

  9. D. Beautiful Array DP

    https://codeforces.com/contest/1155/problem/D 这个题目还是不会写,挺难的,最后还是lj大佬教我的. 这个题目就是要分成三段来考虑, 第一段就是不进行乘,就 ...

  10. B - Dining POJ - 3281 网络流

    Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will c ...