我正在關注一個在線示例並學習「使用數組在Java中實現Circular Deque」。下面是我下面的在線資源:基於數組的Deque implmentation
我有其中有5最終容量現在,如果數組已滿那麼我就可以有兩種方式創建的臨時陣列基於陣列雙端隊列類所有對象,然後將臨時數組的所有對象複製回「object [] arr」。我已經有一段時間了,但一直未能實現。如果有人能幫助我理解這裏的過程,我將不勝感激。我有以下類方法:
- insertAtFront()
- insertAtLast()
- 大小()
- 的isEmpty()
- 的toString()
這裏是我的代碼:
public class ArrayDeque {
private static final int INIT_CAPACITY = 5;
private int front;
private int rear;
private Object[] arr;
public ArrayDeque(){
arr = new Object[ INIT_CAPACITY ];
front = 0;
rear = 0;
}
public void insertAtFirst(Object item){
if(size() >= arr.length){
Object[] tmp = new Object[arr.length + INIT_CAPACITY];
for(int i = 0; i < size(); ++i)
tmp[i] = arr[i];
arr = tmp;
}
arr[front] = item;
++front;
}
public void insertAtLast(Object item){
if(size() >= arr.length){
Object[] tmp = new Object[arr.length + INIT_CAPACITY];
for(int i = 0; i < size(); ++i)
tmp[i] = arr[i];
arr = tmp;
}
arr[rear] = item;
++rear;
}
public int size(){
return (rear - front);
}
public boolean isEmpty(){
return (front == rear);
}
public String toString(){
String s = "";
for(int i = 0; i < size(); ++i)
s += arr[i] + "\n";
return s;
}
}//CLASS
試着寫很多單元測試。使用調試器。 – Jayan
它可能看起來很小,但我也建議刪除代碼中的註釋。他們沒有提供任何有用的信息,因此,只是噪音。 – bedwyr
當size()> = arr.length時,你不明白你想要做什麼。您是否將陣列容量增加了5個,然後添加到前面或最後? – ray