/**

* 自己实现ArrayList

* @author zyyt

*

*/

public class SJBArrayList {

//存放SJBArrayList中的元素

transient Object[] elementData;

//SJBArrayList中含有多少个元素

private int size;

//构造方法

public SJBArrayList(){

this(10);

}

public SJBArrayList(int initialCapacity)

{   //对elementData进行初始化

if (initialCapacity > 0) {

this.elementData = new Object[initialCapacity];

} else if (initialCapacity == 0) {

this.elementData = new Object[0];

} else {

throw new IllegalArgumentException("Illegal Capacity: "+

initialCapacity);

}

}

//判断这个SJBArrayList是否包含元素,如果不包含元素返回true 如果包含则返回false

public boolean isEmpty(){

return size == 0;

}

//返回这个SJBArrayList中包含的元素的个数

public int size(){

return size;

}

//添加一个元素

public void add(Object obj)

{

if(size == elementData.length){

Object[] array = new Object[size * 2 +1];

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

elementData = array;

}

elementData[size++] = obj;

}

//获取对应索引中的元素

public Object get(int index){

if(index<0 || index >= size){

System.out.println("index超过最大索引值或者index小于0");

return null;

}

return elementData[index];

}

//删除对应索引的值

public Object remove(int index){

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

System.out.println("index小于0,或者越界");

System.exit(0);

}

Object oldValue = this.get(index);

System.arraycopy(elementData, index + 1,elementData, index, size);

elementData[size--] = null;

return oldValue;

}

//提货对应索引中的值

public Object set(int index,Object obj)

{

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

System.out.println("index小于0,或者越界");

System.exit(0);

}

Object oldValue = this.get(index);

elementData[index] = obj;

return oldValue;

}

//清空SJBArrayList

public void clear(){

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

elementData[i] = null;

}

size = 0;

}

public static void main(String[] args){

SJBArrayList sjbList = new SJBArrayList();

sjbList.add("111");

sjbList.add("2222");

sjbList.add("3333");

sjbList.add("4444");

sjbList.add("5555");

sjbList.add("66666");

sjbList.remove(2);

System.out.println(sjbList.get(3));

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

System.out.println(sjbList.get(i));

}

}

}

Java中SJBArrayList自己简单实现ArrayList的更多相关文章

  1. java中把list列表转为arrayList以及arraylist数组截取的简单方法

    java中把list列表转为arrayList以及arraylist数组截取的简单方法 package xiaobai; import java.util.ArrayList; import java ...

  2. 在Java中怎样把数组转换为ArrayList?

    翻译自:How to Convert Array to ArrayList in Java? 本文分析了Stack Overflow上最热门的的一个问题的答案,提问者获得了很多声望点,使得他得到了在S ...

  3. 多线程(三) java中线程的简单使用

    java中,启动线程通常是通过Thread或其子类通过调用start()方法启动. 常见使用线程有两种:实现Runnable接口和继承Thread.而继承Thread亦或使用TimerTask其底层依 ...

  4. java中数据流的简单介绍

    java中的I/O操作主要是基于数据流进行操作的,数据流表示了字符或者字节的流动序列. java.io是数据流操作的主要软件包 java.nio是对块传输进行的支持 数据流基本概念 “流是磁盘或其它外 ...

  5. Java中常见数据结构List之ArrayList

    这里主要包含ArrayList和LinkedList, 然后再添加一个:CopyOnWriteArrayList 关于Java中的集合内容, 感觉都已经被写烂了, 我这里主要是做个复习, 再从扒下源代 ...

  6. java中volatile的简单理解

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7833881.html 据说,volatile是java语言中最轻量级的并发控制方式. vo ...

  7. 关于JAVA中异常处理的简单阐释.

    ---恢复内容开始--- 这是我的一篇要在博客园发布的随笔,主要是简单的概括一下我本次所学的关于异常处理的知识.有讲的不妥当的地方,或者有需要补充的,还请各位高人给指点,共同学习,虚心求学.谢谢啦~ ...

  8. Java中的集合List、ArrayList、Vector、Stack(三)

    List接口 List集合代表一个有序集合,集合中每一个元素都有其对应的顺序索引.List集合容许使用重复元素,可以通过索引来访问指定位置的集合对象. ArrayList和Vector实现类 Arra ...

  9. redis学习笔记(二)——java中jedis的简单使用

    redis怎么在java中使用,那就是要用到jedis了,jedis是redis的java版本的客户端实现,原本原本想上来就直接学spring整合redis的,但是一口吃个胖子,还是脚踏实地,从基础开 ...

随机推荐

  1. scipy cluster聚类 ---Python3

    官方文档: https://docs.scipy.org/doc/scipy/reference/cluster.vq.html

  2. IPython与notebook 安装

    基于 python2.7.13 32-bit版本安装 1.安装pyreadline https://pypi.python.org/pypi/pyreadline 下载对应的32位版本 2.用pip安 ...

  3. [MFC美化] SkinMagic使用详解1- SkinMagic使用流程

    [SkinMagic使用流程] 1.工程配置SkinMagic相关文件 2.初始化SkinMagic皮肤文件,窗体加载皮肤 3.释放皮肤资源 特别声明,SkinMagic要是破解版的,如果不是,可能需 ...

  4. 【ARM】S5PV210芯片的启动流程

    S5PV210芯片的设计者的思想 (1)芯片启动后执行iRom(BL0)的内容,进行时钟和看门狗等外设的初始化,将BL1和BL2拷贝到片内SRAM; (2)跳转到片内SRAM执行,完成外部SDRAM的 ...

  5. 在GNU/Linux下设置与定时更换桌面壁纸

    1 简介 在电脑桌面设置一组可以定时更换的壁纸已经不是什么新奇的功能了.比如,Windows 7.KDE桌面环境都可以实现这样的效果.可是,自己目前使用的Debian系统并未安装KDE.GNOME这样 ...

  6. robotium如何定位控件?

    search类获取当前所有的view,然后根据类型或者文本去筛选,找到view后获取坐标,然后点击坐标.本质都是通过坐标点击.solo.clickonScreen方法,底层调用MotionEvent类 ...

  7. 5、sha1加密的一个坑

    OC语言写的sha1加密算法,在网上随手可以搜索到(如下便是),但是我不得不说有一些人不责任,没有提醒大家导入必要的系统头文件,从而导致错误 + (NSString *) sha1:(NSString ...

  8. http请求 302解决方法

    http请求+302解决方法 相关文章 当前,许多站点的部署方式都对自身的性能产生了消极影响,而网站的所有者并没有意识到这个问题.我们今天针对性的讨论以下几个常见的影响网站性能的瓶颈,观察其变化趋势, ...

  9. mysql 创建用户与授权、修改密码

    mysql版本:5.6.35 1.创建用户 #foo表示你要建立的用户名,后面的123表示密码, #localhost限制在固定地址localhost登陆 CREATE USER foo@localh ...

  10. 关于C语言知识调查

    因为上一篇随笔对这一部分写得不够清楚,因此在这篇做一些补充. 你是怎么学习C语言的? 起初,对于C语言的学习主要是通过老师课堂的教学,完成相关的课后作业.与我的技能相比的话,他们都有一个共同点需要去实 ...