天天看點

java 隊列 array_JAVA之數組隊列

packagexxj.datastructure0810;importjava.util.Random;public classDataStructure {

public static voidmain(String[] args) {

String [] array= {"1","2","3"};

MyArrayList mal = new MyArrayListImpl();//mal.add(100);//mal.add(new Object());

for(int i=0;i

mal.add(array[i]);

}

Random rand= newRandom();int size = rand.nextInt(20);for(int i=0;i

mal.add(""+((char)(rand.nextInt(26)+97)));

}

System.out.println("size = "+size);for(int i=0;i

System.out.println(mal.get(i));

}

}

}

packagexxj.datastructure0810;

public interface MyArrayList{

public voidadd(E e);

public boolean add(intindex,E e);

public E remove(intindex);

public booleanremove(E e);

public boolean update(intindex,E e);

public booleanupdate(E oldE,E e);

public intsize();

public E get(intindex);

}

packagexxj.datastructure0810;

public class MyArrayListImpl implements MyArrayList{//聲明一個數組名

privateObject[] array;//聲明一個記錄存儲元素總數的屬性名

private intsize;

publicMyArrayListImpl() {

array= new Object[1];

}//public MyArrayListImpl(int i){//array = new String[i];//}

public voidadd(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++;

}

public boolean add(intindex, E e) {return false;

}

public E remove(intindex) {return null;

}

public booleanremove(E e) {return false;

}public booleanremoveAll(E e) {return false;

}

public boolean update(intindex, E e) {return false;

}

public booleanupdate(E oldE, E e) {return false;

}

public intsize() {returnsize;

}

public E get(intindex) {if (index < 0 || index >=size)return null;return(E)array[index];

}

}

1.數組:

數組是屬于資料結構中的一種線性結構。

資料對象在記憶體中的儲存方式是一種線性結構。

數組定義的方式:

資料類型 [] 數組名 = new 資料類型[長度];

資料類型 [] 數組名 = {資料,...};

資料類型 [] 數組名 = new 資料類型[]{資料,...};

資料類型 [] 數組名;

數組名 = new 資料類型[長度];

數組名 = new 資料類型[]{資料,...};

//錯誤示範

數組名 = {資料,。。。}

資料類型 [][] 數組名 = new 資料類型[行][列];

資料類型 [][] 數組名 = {{資料,...},...};

數組是否是一個類?

是的

數組是類,那麼肯定提供了屬性和方法,那麼數組有哪些屬性和方法呢?

數組隻有一個唯一的length屬性,該屬性是用來擷取數組長度

擷取或設定一維數組中某一個位置的資料:數組名[下标]

擷取一維數組能存儲多少個元素:數組名.length

擷取或設定二維數組中某一個位置的資料:數組名[行下标][列下标]

擷取二維數組的行數:數組名.length

擷取二維數組的列數:數組名[行下标].length

擷取二維數組能存儲多少個元素:

數組名.length*數組名[行下标].length //不适用于所有情況

數組名[行下标].length+...

除了0可以直接給數字之外,其他的都通過length來擷取

數組下标隻會從0開始。

2.數組隊列

1.數組有什麼優點和缺點?

優點:

存取資料是所有資料結構中速度最快的一種,你在擷取或設定資料時,

可以直接通過下标定位。

缺點:

如果你要存儲的資料不确定時,數組在建立時需要給予的長度就是缺點。

1.建立數組小了,存儲不下資料

2.建立數組大了,浪費記憶體空間

如果在項目中特定情況下隻能存儲一種資料類型;在項目的兩一個位置

需要存儲N種資料類型;這樣數組在建立時需要指定固定的類型就會是缺點。

2.數組隊列的實作

數組隊列的實作原理:借助于數組名中存儲的是數組對象在記憶體中的首位址。

interface MyArrayList.java 父接口,定義數組中所需要實作的方法

class MyArrayListImpl.java 子類,實作接口中所有的抽象方法。

使用泛型來解決第二個問題。

泛型是Java中的一種特殊符号,不能把它當做任何一個種資料類型。

但是它可以泛指Java所有的資料類型(基本資料類型,引用類型)。

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