ArrayList类的简略编写 A8站源码交易平台

摘要:测验元素加满了,内存扩容。 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());

8站源码交易平台

ArrayList类

编写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<size;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<size-1;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 方针数组
*/
private void copyOf(Object[] src,Object[] dest) {
for(int i=0;i<this.size;i++) { dest[i]=src[i];
}
}

/**
* 获取当时ArrayList的内容
*/
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("size:"+this.size+" opacity:"+this.arrs.length+" ");
sb.append("[");
for(int i = 0;i<size;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());
}
}


1.png

A8站源码交易平台



  • 全部评论(0)
最新发布的资讯信息
【A8站-免费源码分享|直播源码】直播系统源码开发:关于安卓开发工具和obs直播推流(2020-10-30 09:41)
【计算机/互联网|】【独家修复】用户定制版短视频点赞系统,支持抖音+快手+刷宝+微视等所有主流短视频评论系统源码(2020-10-26 16:34)
【技术宅-为技术而疯|网站架设教程】【独家首发】最新更新已对接短信2020全新抖音快手点赞任务系统霸屏天下小红书头条威客兼职完整搭建架设视频教程(2020-10-25 13:56)
【技术宅-为技术而疯|网站架设教程】最新可用个人发卡网系统源码完整搭建架设视频教程(2020-10-25 10:53)
【技术宅-为技术而疯|网站架设教程】独家更新全新V10抢单系统唯品会京东淘宝自动抢单区块系统源码全开源抢单收单接单返利+搭建架设完整视频教程(2020-10-25 10:52)
【计算机/互联网|】柔丫纸尿裤云仓系统源码部署(2020-10-15 18:13)
【计算机/互联网|】侏罗纪软件模式定制开发(2020-10-14 15:33)
【计算机/互联网|】S2b2C供应商系统 营销闭环(2020-10-10 17:46)
【计算机/互联网|程序设计开发】盛都汇系统奖励机制(2020-10-10 17:20)
【A8站-免费源码分享|网站源码】积分商城系统APP开发(2020-09-23 14:56)
联系我们
Q Q:3101359898 点击直接对话
电话:18580901894
邮箱:admin#a8zhan.com
时间:09:00 - 24:00
手机二维码 访问手机版
返回顶部