美文网首页
数组队列

数组队列

作者: 蛤星人丨冬马和纱 | 来源:发表于2017-07-18 12:22 被阅读0次

    1.数组有什么优点和缺点?

    优点:

    存取数据是所有数据结构中速度最快的一种,你在获取或设置数据时,

    可以直接通过下标定位。

    缺点:

    如果你要存储的数据不确定时,数组在创建时需要给予的长度就是缺点。

    1.创建数组小了,存储不下数据

    2.创建数组大了,浪费内存空间

    如果在项目中特定情况下只能存储一种数据类型;在项目的两一个位置

    需要存储N种数据类型;这样数组在创建时需要指定固定的类型就会是缺点。

    2.数组队列的实现

    数组队列的实现原理:借助于数组名中存储的是数组对象在内存中的首地址。

    interface MyArrayList.java 父接口,定义数组中所需要实现的方法

    class MyArrayListImpl.java 子类,实现接口中所有的抽象方法。

    使用泛型来解决第二个问题。

    泛型是Java中的一种特殊符号,不能把它当做任何一个种数据类型。

    但是它可以泛指Java所有的数据类型(基本数据类型,引用类型)。

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

    public class MyArrayListImplimplements MyArrayList{

    // 声明一个数组名

    private Object[] array;

    // 声明一个记录存储元素总数的属性名

    private int size;

    /**

    * 构造方法

    */

    public MyArrayListImpl() {

    array = new Object[1];

    }

    // public MyArrayListImpl(int i){

    // array = new String[i];

    // }

    /**

    * 添加元素到数组队列中的方法

    *

    * @param e要添加的元素

    */

    public void add(E e) {

    if (size == 0)

    array[0] = e;

    else {

    // 根据所添加元素的的个数来创建新的数组,新数组的长度是size+1

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

    // 将新元素str添加到newArray数组的末尾

    newArray[size] = e;

    // 将原始数组中的数据存入到新数组中

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

    newArray[i] = array[i];

    }

    // 新数组的地址赋给原始数组

    array = newArray;

    }

    // 记录元素总数增加1.

    size++;

    }

    /**

    * 向数组队列中指定的位置插入一个新的元素

    *

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

    * @param e要插入的新元素

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

    */

    public boolean add(int index, E e) {

    return false;

    }

    /**

    * 根据指定的索引位置,从数组队列中移除一个元素

    *

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

    * @return 返回null表示移除失败,否则会返回移除的元素

    */

    public E remove(int index) {

    return null;

    }

    /**

    * 移除指定的元素

    *

    * @param e要移除的元素

    * @return 返回值true表示执行成功,返回false表示执行失败

    */

    public boolean remove(E e) {

    return false;

    }

    public boolean removeAll(E e) {

    return false;

    }

    /**

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

    *

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

    * @param e新的元素

    * @return 返回值true表示执行成功,返回false表示执行失败

    */

    public boolean update(int index, E e) {

    return false;

    }

    /**

    * 修改指定元素的内容

    *

    * @param oldE要修改的元素

    * @param e新的元素

    * @return 返回值true表示执行成功,返回false表示执行失败

    */

    public boolean update(E oldE, E e) {

    return false;

    }

    /**

    * 获取数组队列中存储的元素总数

    *

    * @return 返回数组队列中存储的元素总数属性

    */

    public int size() {

    return size;

    }

    /**

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

    *

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

    * @return 返回null表示获取失败,否则会返回获取到的元素

    */

    public E get(int index) {

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

    return null;

    return (E)array[index];

    }

    }

    相关文章

      网友评论

          本文标题:数组队列

          本文链接:https://www.haomeiwen.com/subject/hiackxtx.html