日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: xxxxxx国产 | 99色| 亚洲图区欧美 | 午夜99| 裸体女视频 | 成人精品视频99在线观看免费 | 视频在线亚洲 | 欧美日韩1 | 特黄特色大片bbbb | 日韩精品在线第一页 | 黑人无套内谢中国美女 | 日韩在线视频免费播放 | 欧美精品国产 | 国产在线视频导航 | 国产精品igao | 香蕉视频97 | 亚洲色图欧美自拍 | 丰满人妻翻云覆雨呻吟视频 | 黄片毛片在线看 | 97国产在线 | 免费看麻豆 | 天天天色| 免费在线观看网址 | 四虎4hu永久免费网站影院 | jizzjizz视频 | 北条麻妃青青久久 | 丁香花高清在线观看完整动漫 | 在线观看免费视频 | 天天操天天干天天操 | 蜜臀av免费一区二区三区水牛 | 麻豆免费在线观看 | 天天想你在线观看完整版电影高清 | 精品少妇人妻av免费久久久 | av在线.com| 最新视频 - x88av | 鲁丝一区二区三区 | 貂蝉被到爽流白浆在线观看 | av图片在线| 啪啪精品 | 久久日韩 | av鲁丝一区鲁丝二区鲁丝三区 | 毛片在线免费观看网站 | 日韩日日日 | 伊人国产女| 男女操操 | 又污又黄又爽的网站 | 日韩美女av在线 | 人人澡人人澡人人 | 女人脱下裤子让男人捅 | 日韩精品在线视频 | 精品777| wwww欧美 | 黄色美女视频网站 | 中文字幕高清在线 | 丁香花免费高清完整在线播放 | www.av在线播放 | 玖玖精品国产 | 992tv成人免费视频 | 一区一区三区产品乱码 | www.夜夜操| 日日噜噜夜夜狠狠久久波多野 | 亚洲成人免费在线观看 | 你懂的在线播放 | 91视频大全 | 在线观看一区二区视频 | av网址免费 | 茄子视频A | 99情趣网 | 成年女人免费视频 | 毛片网止 | 国产精品波多野结衣 | 久久人人爽天天玩人人妻精品 | 性欧美丰满熟妇xxxx性 | 玉丸(双性调教) | 色婷婷91 | 好吊妞视频一区二区三区 | 国产一区二区在线观看视频 | 1级黄色大片儿 | 无码人妻一区二区三区免费 | 亚洲美女影院 | www一级片| 91久久精品国产91性色tv | 91在线精品李宗瑞 | 影音先锋美女 | 韩国毛片网站 | 国产成人av无码精品 | 久久色资源网 | 天天夜夜操 | 国产在线超碰 | 2020亚洲男人天堂 | 国产精品无码av在线有声小说 | 3d动漫精品啪啪一区二区免费 | 国产第一色 | 手机看片在线观看 | 国产伦理片在线观看 | 手机看片日韩在线 | 亚洲精品久久夜色撩人男男小说 | 99在线国产 | 国产二区av|