您的位置:首页 > 编程语言 > Java开发

Java -- 自己实现数组列表(Arraylist)

2017-05-10 16:21 537 查看
Java – 自己实现数组列表(Arraylist)

一 . 元素

数组列表中的底层是以数组的方式实现的,因此,包括一个装数据的数组

然后一个表示个数的size

Object[] elemData;
int size;


二 . 构造方法

1. 有参构造方法:如果传入initialCapacity<0,则抛出异常,否则,建立一个initialCapacity大小的数。

public SxtArrayList(int initialCapacity){
if(initialCapacity<0){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
elementData = new Object[initialCapacity];
}


无参构造方法

直接调用有参的构造方法

public MyArrayList()
{
this(10);
}


3.普通方法

- 返回数组列表的大小

public int size()
{
return size;
}


判空

public boolean isEmpty()
{
return size == 0;
}
}


在数组列表的末尾添加对象

首先要的对数组进行判满,如果满了,扩容,然后添加,大小+1;

如果判满后发现未满,则直接添加,大小+1.

public void add(Object object)
{
if (size == elemData.length)
{
Object[] newArray = new Object[ 2 * elemData.length + 1];
System.arraycopy(elemData,0,newArray,0,elemData.length);
elemData = newArray;

}
elemData[size++] = object;
}


通过索引,get到数组列表中的对象,不过要首先判断是否数组越界

public void rangeCheck(int index)
{
if (index < 0 || index >= size)
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}


public Object get(int index)
{
rangeCheck(index);
return elemData[index];

}


通过传入的对象来查找数组中匹配的对象

遍历数组,用每一个objec来测试是否equals,如果是,就返回

如果不存在在数组里,就返回null

public Object get(Object object)
{
for (int i = 0; i < size; i++)
{
if (elemData[i].equals(object))
return elemData[i];
}
return null;```


通过索引index来remove

首先要判断index是否越界

其次找到那个位置,remove

remove用Arraycopy,使得能够覆盖且让后面的向前进一位

最后,将原来的最后一个为止置空,size-1

public void remove(int index)
{
rangeCheck(index);
int numberMoved = size - index - 1;
if (numberMoved > 0)
System.arraycopy(elemData,index + 1 ,elemData,index,numberMoved);
elemData[--size] = null;//把原来的最后一个位置置空,而且大小-1
}


remove根据传入的object,进行匹配删除

首先遍历数组,如果找到,remove

remove依然用ArrayCopy的方法进行覆盖,移动

依然要置空原来的最后一个位置,大小-1

如果没有匹配的,则返回null

public void remove(Object object)
{
for (int i = 0; i < size; i++)
{
if (get(i).equals(object))
{
remove(i);
}
}
}


set根据索引替换掉该位置的元素

public void set(int index, Object object)
{
rangeCheck(index);
elemData[index] = object;
}


add,根据index在此位置添加元素

利用ArrayCopy,复制index之后的元素到从index + 1 的位置开始,然后将index位置的元素替换掉,大小+1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java arraylist