您好,登錄后才能下訂單哦!
ArrayList類(lèi)
編寫(xiě)ArrayList類(lèi)
package com.mage.arrays;
public class ArrayList {
private Object[] arrs;
private int size; //數(shù)組實(shí)際存儲(chǔ)元素個(gè)數(shù)
private int capacity;//底層arrs數(shù)組的長(zhǎng)度,也就是開(kāi)的內(nèi)存空間大小
private static final int DEFAULT_CAPACITY = 10;
public ArrayList() {
this(DEFAULT_CAPACITY);
}
public ArrayList(int capacity) {
arrs = new Object[capacity];
this.capacity = capacity;
}
/**
* @return 返回?cái)?shù)組實(shí)際存儲(chǔ)的元素個(gè)數(shù)
*/
public int size(){
return this.size;
}
/**
* @return 返回當(dāng)前ArrayList底層數(shù)組的容量
*/
public int opacity() {
return arrs.length;
}
/**
* @return 返回當(dāng)前數(shù)組是否為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("錯(cuò)誤參數(shù):index");
return;
}
//存滿(mǎn)了
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);
}
/**
* 查詢(xún)指定元素在當(dāng)前數(shù)組中的索引位置(只找一個(gè))
* @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代表當(dāng)前數(shù)組的入?yún)⒂姓`
*/
public Object get(int index) {
if(index<0||index>=size) {
System.out.println("參數(shù)有誤:index");
return null;
}
return this.arrs[index];
}
/**
* 修改數(shù)組中指定位置上的元素
* @param index 指定的索引
* @param value 修改之后的值
* @return 修改之前的值 如果索引有問(wèn)題 返回null
*/
public Object set(int index,Object value) {
if(get(index)==null) {
return null;
}
Object oldValue=arrs[index];
arrs[index]=value;
return oldValue;
}
/**
* 根據(jù)索引刪除元素
* @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;
}
/**
* 刪除第一個(gè)元素
* @return
*/
public Object removeFirst() {
return remove(0);
}
/**
* 刪除最后元素
* @return
*/
public Object removeLast() {
return remove(size-1);
}
/**
* 數(shù)組擴(kuò)容操作
* @param capacity 新數(shù)組的容量
*/
private void resize(int capacity) {
Object[] newArrs = new Object[capacity];
copyOf(arrs,newArrs);
arrs = newArrs;
}
/**
* 數(shù)組復(fù)制
* @param src 源數(shù)組
* @param dest 目標(biāo)數(shù)組
*/無(wú)錫人流多少錢(qián) http://www.bhnnk120.com/
private void copyOf(Object[] src,Object[] dest) {
for(int i=0;i
dest[i]=src[i];
}
}
/**
* 獲取當(dāng)前ArrayList的內(nèi)容
*/
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();
}
}
測(cè)試類(lèi)
package com.mage.arrays;
public class TestArrayList {
public static void main(String[] args) {
// ArrayList存儲(chǔ)數(shù)據(jù)的對(duì)象
ArrayList arrayList = new ArrayList();// size = 0 capacity 10
//測(cè)試增加不同類(lèi)型值
arrayList.addFirst('a');
arrayList.addFirst("哈哈");
arrayList.addFirst(44);
System.out.println(arrayList.toString());
//測(cè)試在最后位置加值
arrayList.addLast(33);
System.out.println(arrayList.toString());
//測(cè)試元素加滿(mǎn)了,內(nèi)存擴(kuò)容。
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());
//測(cè)試移除增加元素會(huì)撤回?cái)U(kuò)容嘛
arrayList.remove(0);
System.out.println(arrayList.toString());
//測(cè)試元素個(gè)數(shù)為原來(lái)的四分之一會(huì)壓縮一半內(nèi)存嘛
arrayList.remove(0);
arrayList.remove(0);
arrayList.remove(0);
arrayList.remove(0);
arrayList.remove(0);
System.out.println(arrayList.toString());
//測(cè)試修改
arrayList.set(1, "被修改了");
System.out.println(arrayList.toString());
}
}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。