數(shù)組隊(duì)列

1.數(shù)組有什么優(yōu)點(diǎn)和缺點(diǎn)?

優(yōu)點(diǎn):

存取數(shù)據(jù)是所有數(shù)據(jù)結(jié)構(gòu)中速度最快的一種,你在獲取或設(shè)置數(shù)據(jù)時(shí),

可以直接通過(guò)下標(biāo)定位。

缺點(diǎn):

如果你要存儲(chǔ)的數(shù)據(jù)不確定時(shí),數(shù)組在創(chuàng)建時(shí)需要給予的長(zhǎng)度就是缺點(diǎn)。

1.創(chuàng)建數(shù)組小了,存儲(chǔ)不下數(shù)據(jù)

2.創(chuàng)建數(shù)組大了,浪費(fèi)內(nèi)存空間

如果在項(xiàng)目中特定情況下只能存儲(chǔ)一種數(shù)據(jù)類型;在項(xiàng)目的兩一個(gè)位置

需要存儲(chǔ)N種數(shù)據(jù)類型;這樣數(shù)組在創(chuàng)建時(shí)需要指定固定的類型就會(huì)是缺點(diǎn)。

2.數(shù)組隊(duì)列的實(shí)現(xiàn)

數(shù)組隊(duì)列的實(shí)現(xiàn)原理:借助于數(shù)組名中存儲(chǔ)的是數(shù)組對(duì)象在內(nèi)存中的首地址。

interface MyArrayList.java 父接口,定義數(shù)組中所需要實(shí)現(xiàn)的方法

class MyArrayListImpl.java 子類,實(shí)現(xiàn)接口中所有的抽象方法。

使用泛型來(lái)解決第二個(gè)問(wèn)題。

泛型是Java中的一種特殊符號(hào),不能把它當(dāng)做任何一個(gè)種數(shù)據(jù)類型。

但是它可以泛指Java所有的數(shù)據(jù)類型(基本數(shù)據(jù)類型,引用類型)。

Java中的泛型有E(元素)、K(鍵)、V(值)。


public class MyArrayListImplimplements MyArrayList{

// 聲明一個(gè)數(shù)組名

private Object[] array;

// 聲明一個(gè)記錄存儲(chǔ)元素總數(shù)的屬性名

private int size;

/**

* 構(gòu)造方法

*/

public MyArrayListImpl() {

array = new Object[1];

}

// public MyArrayListImpl(int i){

// array = new String[i];

// }

/**

* 添加元素到數(shù)組隊(duì)列中的方法

*

* @param e要添加的元素

*/

public void add(E e) {

if (size == 0)

array[0] = e;

else {

// 根據(jù)所添加元素的的個(gè)數(shù)來(lái)創(chuàng)建新的數(shù)組,新數(shù)組的長(zhǎng)度是size+1

Object[] newArray = new Object[size + 1];

// 將新元素str添加到newArray數(shù)組的末尾

newArray[size] = e;

// 將原始數(shù)組中的數(shù)據(jù)存入到新數(shù)組中

for (int i = 0; i < size; i++) {

newArray[i] = array[i];

}

// 新數(shù)組的地址賦給原始數(shù)組

array = newArray;

}

// 記錄元素總數(shù)增加1.

size++;

}

/**

* 向數(shù)組隊(duì)列中指定的位置插入一個(gè)新的元素

*

* @param index要插入元素的所在的索引位置

* @param e要插入的新元素

* @return 返回true表示插入成功,返回false表示插入失敗

*/

public boolean add(int index, E e) {

return false;

}

/**

* 根據(jù)指定的索引位置,從數(shù)組隊(duì)列中移除一個(gè)元素

*

* @param index要移除元素所在的索引位置

* @return 返回null表示移除失敗,否則會(huì)返回移除的元素

*/

public E remove(int index) {

return null;

}

/**

* 移除指定的元素

*

* @param e要移除的元素

* @return 返回值true表示執(zhí)行成功,返回false表示執(zhí)行失敗

*/

public boolean remove(E e) {

return false;

}

public boolean removeAll(E e) {

return false;

}

/**

* 修改指定索引位置的元素

*

* @param index要修改元素的位置

* @param e新的元素

* @return 返回值true表示執(zhí)行成功,返回false表示執(zhí)行失敗

*/

public boolean update(int index, E e) {

return false;

}

/**

* 修改指定元素的內(nèi)容

*

* @param oldE要修改的元素

* @param e新的元素

* @return 返回值true表示執(zhí)行成功,返回false表示執(zhí)行失敗

*/

public boolean update(E oldE, E e) {

return false;

}

/**

* 獲取數(shù)組隊(duì)列中存儲(chǔ)的元素總數(shù)

*

* @return 返回?cái)?shù)組隊(duì)列中存儲(chǔ)的元素總數(shù)屬性

*/

public int size() {

return size;

}

/**

* 獲取指定索引位置的元素

*

* @param index要獲取元素的索引位置

* @return 返回null表示獲取失敗,否則會(huì)返回獲取到的元素

*/

public E get(int index) {

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

return null;

return (E)array[index];

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,853評(píng)論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,699評(píng)論 19 139
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,935評(píng)論 0 33
  • 早上起床后洗衣服,原本打算是進(jìn)班刷專四題,宿舍的集體活動(dòng)也是愿意參加的,真是美麗的意外,考前的放松好了。雖然堵了車...
    6186834d3810閱讀 253評(píng)論 0 0
  • 那時(shí)候的巴黎應(yīng)該有種浪漫奔放而又涼薄清冷的氣質(zhì)。 香榭麗舍大街在薄霧中呈現(xiàn)出迷人的青灰色,剛剛?cè)旧洗阂獾奶耢o的草坪...
    路耳咩咩咩閱讀 592評(píng)論 0 0

友情鏈接更多精彩內(nèi)容