日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java arraylist实现_java实现ArrayList基本功能

發(fā)布時間:2024/9/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java arraylist实现_java实现ArrayList基本功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本篇介紹手動實現(xiàn)一個ArrayList的基本功能。

ArrayList的底層是一個動態(tài)數(shù)組,這個有別于LinkedList的鏈表。代碼實現(xiàn)了ArrayList的基本功能,所以沒有實現(xiàn)ArrayList實現(xiàn)的一些接口,比如:RandomAccess和Serializable等。

方法名

作用

getSize()

獲取數(shù)組大小

checkIncrease(int index,Object obj)

擴(kuò)容,將原來的數(shù)組擴(kuò)容一倍并將原來數(shù)據(jù)拷貝到新數(shù)組

indexOf(Object o)

根據(jù)元素獲取在數(shù)組中首次出現(xiàn)的索引值

add(Object o)

往數(shù)組中添加元素

remove(int index)

刪除數(shù)組中的元素如果此元素不在數(shù)組最后位置則將其后面的每個元素向前移動一位

checkIndexOut(int index)

檢查所給下標(biāo)是否越界

get(int index)

獲取指定下標(biāo)數(shù)據(jù)

removeAll()

清空數(shù)組

change(int index,Object o)

修改對應(yīng)索引的值

contains(Object o)

判斷是否包含對應(yīng)值

isEmpty()

判斷是否為空

public class MyArrayList {

//用于存儲數(shù)據(jù)

private Object[] data = null;

//集合的元素個數(shù)

private int size = 0;

//定義一個常量為 10.(后面用于定義默認(rèn)的集合大小)

private static final int DEFAULT_CAPACITY = 10;

/**

* 無參構(gòu)造函數(shù),指定初始大小為10

*/

public MyArrayList(){

this(DEFAULT_CAPACITY);//調(diào)用有參構(gòu)造函數(shù)

}

/**

* 有參構(gòu)造函數(shù),指定數(shù)組大小

* @param initialCapacity

*/

public MyArrayList(int initialCapacity){

if(initialCapacity < 0){//判斷數(shù)組大小不嗯呢該為負(fù)數(shù)

throw new IllegalArgumentException("非法的集合初始容量值 Illegal Capacity: "+initialCapacity);

}else{

//實例化數(shù)組

this.data = new Object[initialCapacity];

}

}

/**

* 獲取數(shù)組大小

* @return

*/

public int getSize(){

return size;

}

/**

* 擴(kuò)容,復(fù)制原來的數(shù)組并擴(kuò)容一倍

* @param index

* @param obj

*/

public void checkIncrease(int index,Object obj){

if(size >= data.length){//原來數(shù)組放滿之后進(jìn)行擴(kuò)容

//實例化一個新數(shù)組

Object[] newData = new Object[size*2];

if(index == -1 && obj == null){

System.arraycopy(data, 0, newData, 0, size);

}else{

//將要插入索引位置前面的對象 拷貝

System.arraycopy(data, index, newData, index+1, size-index);

}

data = newData;

newData = null;

}

}

/**

* 根據(jù)元素獲得在集合中首次出現(xiàn)的索引

* @param o

* @return

*/

public int indexOf(Object o){

if(o == null){

for(int i = 0,len=data.length;i

if(data[i] == null){

return i;

}

}

}else{

for(int i=0,len=data.length;i

if(o.equals(data[i])){

return i;

}

}

}

return -1;

}

/**

* 在尾部添加元素

* @param o 需要被添加的元素

*/

public boolean add(Object o){

//檢查是否需要擴(kuò)容

checkIncrease(-1,null);

data[size++] = o;

return true;

}

/**

* 根據(jù)索引刪除元素

* @param index

* @return

*/

public boolean remove(int index){

if(checkIndexOut(index)){//判斷數(shù)組是否越界

if(index == size-1){//如果要刪除的元素為最后一個元素

data[index] = null;

}else{//如果刪除的元素不為最后一個元素則需要將此元素之后的元素向前移一位

System.arraycopy(data,index+1,data,index,size-index);

}

size--;

return false;

}else{//數(shù)組越界情況

throw new IndexOutOfBoundsException("指定的索引越界,集合大小為:"+size+",您指定的索引大小為:"+index);

}

}

/**

* 判斷給定索引是否越界

* @param index

* @return

*/

public boolean checkIndexOut(int index){

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

// throw new IndexOutOfBoundsException("指定的索引越界,集合大小為:"+size+",您指定的索引大小為:"+index);

return false;

}

return true;

}

/**

* 根據(jù)給定索引獲取元素

* @param index

* @return

*/

public Object get(int index) {

checkIndexOut(index);//判斷是否越界

return data[index];

}

/**

* 刪除所有元素

*/

public void removeAll(){

for(int i=0,len=data.length;i

data[i] = null;

}

size = 0;//

}

/**

* 根據(jù)索引修改元素

* @param index

* @param o

* @return

*/

public boolean change(int index,Object o){

checkIndexOut(index);//判斷是否越界

data[index] = o;

return true;

}

/**

* 判斷某個元素是否存在,若存在則返回索引,不存在返回-1

* @param o

* @return

*/

public int contains(Object o){

for(int i = 0,len=data.length;i

if(o.equals(data[i])){

return i;

}

}

return -1;

}

/**

* 判斷數(shù)組是否為空

* @return

*/

public boolean isEmpty() {

return size == 0;

}

}

總結(jié)

以上是生活随笔為你收集整理的java arraylist实现_java实现ArrayList基本功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。