189 8069 5689

ArrayList类的简单编写

ArrayList类

创新互联建站是一家企业级云计算解决方案提供商,超15年IDC数据中心运营经验。主营GPU显卡服务器,站群服务器,服务器托管机柜,海外高防服务器,成都机柜租用,动态拨号VPS,海外云手机,海外云服务器,海外服务器租用托管等。

编写ArrayList类

package com.mage.arrays;

public class ArrayList {

private Object[] arrs;

private int size; //数组实际存储元素个数

private int capacity;//底层arrs数组的长度,也就是开的内存空间大小

private static final int DEFAULT_CAPACITY = 10;

public ArrayList() {

this(DEFAULT_CAPACITY);

}

public ArrayList(int capacity) {

arrs = new Object[capacity];

this.capacity = capacity;

}

/**

* @return 返回数组实际存储的元素个数

*/

public int size(){

return this.size;

}

/**

* @return 返回当前ArrayList底层数组的容量

*/

public int opacity() {

return arrs.length;

}

/**

* @return 返回当前数组是否为null

*/

public boolean isEmpty() {

return this.size==0;

}

/**

* 添加元素到指定的位置上

* @param value 添加的元素

* @param index 添加的位置

*/

public void add(Object value,int index) {

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

System.out.println("错误参数:index");

return;

}

//存满了

if(size==arrs.length) {

resize(size*2);

}

for(int i=size-1;i>=index;i--) {

arrs[i+1]=arrs[i];

}

arrs[index]=value;

size++;

}

/**

* 添加首元素

* @param value 添加的元素值

*/

public void addFirst(Object value) {

add(value,0);

}

/**

* 添加尾元素

* @param value

*/

public void addLast(Object value) {

add(value,size);

}

/**

* 查询指定元素在当前数组中的索引位置(只找一个)

* @param value

* @return 查找的元素的索引 如果不存在返回-1

*/

public int getIndexByValue(Object value) {

for(int i=0;i

if(arrs[i]==value) {

return i;

}

}

return -1;

}

/**

* 返回指定索引位置上的元素

* @param index 索引

* @return 元素 如果返回null代表当前数组的入参有误

*/

public Object get(int index) {

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

System.out.println("参数有误:index");

return null;

}

return this.arrs[index];

}

/**

* 修改数组中指定位置上的元素

* @param index 指定的索引

* @param value 修改之后的值

* @return 修改之前的值 如果索引有问题 返回null

*/

public Object set(int index,Object value) {

if(get(index)==null) {

return null;

}

Object oldValue=arrs[index];

arrs[index]=value;

return oldValue;

}

/**

* 根据索引删除元素

* @param index 索引

* @return 删除的元素 如果索引有误 返回null

*/

public Object remove(int index) {

if(get(index)==null) {

return null;

}

Object oldValue = arrs[index];

for(int i=index;i

arrs[i]=arrs[i+1];

}

size--;

arrs[size]=null;

if(size==arrs.length/4&&arrs.length/2>0) {

resize(arrs.length/2);

}

return oldValue;

}

/**

* 删除第一个元素

* @return

*/

public Object removeFirst() {

return remove(0);

}

/**

* 删除最后元素

* @return

*/

public Object removeLast() {

return remove(size-1);

}

/**

* 数组扩容操作

* @param capacity 新数组的容量

*/

private void resize(int capacity) {

Object[] newArrs = new Object[capacity];

copyOf(arrs,newArrs);

arrs = newArrs;

}

/**

* 数组复制

* @param src 源数组

* @param dest 目标数组

*/无锡人流多少钱 http://www.bhnnk120.com/

private void copyOf(Object[] src,Object[] dest) {

for(int i=0;i

dest[i]=src[i];

}

}

/**

* 获取当前ArrayList的内容

*/

public String toString() {

StringBuffer sb = new StringBuffer();

sb.append("size:"+this.size+"\topacity:"+this.arrs.length+"\t");

sb.append("[");

for(int i = 0;i

sb.append(arrs[i]);

if(i!=size-1) {

sb.append(",");

}

}

sb.append("]");

return sb.toString();

}

}

测试类

package com.mage.arrays;

public class TestArrayList {

public static void main(String[] args) {

// ArrayList存储数据的对象

ArrayList arrayList = new ArrayList();// size = 0 capacity 10

//测试增加不同类型值

arrayList.addFirst('a');

arrayList.addFirst("哈哈");

arrayList.addFirst(44);

System.out.println(arrayList.toString());

//测试在最后位置加值

arrayList.addLast(33);

System.out.println(arrayList.toString());

//测试元素加满了,内存扩容。

arrayList.addLast(33);

arrayList.addLast(33);

arrayList.addLast(33);

arrayList.addLast(33);

arrayList.addLast(33);

arrayList.addLast(44);

arrayList.addLast(55);

System.out.println(arrayList.toString());

//测试移除增加元素会撤回扩容嘛

arrayList.remove(0);

System.out.println(arrayList.toString());

//测试元素个数为原来的四分之一会压缩一半内存嘛

arrayList.remove(0);

arrayList.remove(0);

arrayList.remove(0);

arrayList.remove(0);

arrayList.remove(0);

System.out.println(arrayList.toString());

//测试修改

arrayList.set(1, "被修改了");

System.out.println(arrayList.toString());

}

}

ArrayList类的简单编写

分享文章:ArrayList类的简单编写
路径分享:http://jkwzsj.com/article/jhjjss.html

其他资讯