我正在按照我的講師的要求用ArrayList編寫一個deque實現。到目前爲止類的身體看起來像這樣將二進制文件讀取到一個deque的問題
try {
while (!endOfFile) {
character = inputFile.readChar();
while (!character.equals('\u0003')) {
if (character.equals('\u0008'))
deck.removeBack();
else
deck.addToBack(character);
}
}
while (!deck.isEmpty()) {
character = deck.removeFront();
if (character.equals('\u0003'))
System.out.print("\n");
else
System.out.print(character);
}
} catch (EOFException e) {
endOfFile = true;
}
爲
Deque<Character> = new deck Deque<Character>()
我測試過我的Deque一個單獨的測試類,我敢肯定,它的正常工作的雙端隊列初始化。但是每次我嘗試運行這個讀取的類時,都會在deck.addToBack(character)行處導致java.lang.OutOfMemoryError。什麼導致了這個問題,怎麼可能避免?
編輯:我執行的Deque。界面由我的導師提供。
import java.util.*;
public class Deque<T> extends ArrayList<T> implements DequeInterface<T> {
public Deque()
{
super();
}
public void addToFront(T newEntry) {
add(0, newEntry);
}
public void addToBack(T newEntry) {
add(newEntry);
}
public T removeFront() {
T entry = null;
entry = get(0);
remove(0);
return entry;
}
public T removeBack() {
T entry = null;
entry = get(size() - 1);
remove(size() - 1);
return entry;
}
public T getFront() {
T entry = get(0);
return entry;
}
public T getBack() {
T entry = get(size() - 1);
return entry;
}
public boolean isEmpty() {
if (size() == 0)
return true;
else
return false;
}
public void clear() {
clear();
}
}
如果您的deque實現導致OutOfMemoryError,這意味着您應該檢查實現本身。不是測試代碼。現在沒有辦法告訴錯誤原因。 – 2010-09-18 16:02:39
謝謝。實施增加了。請看一下。 – Francis 2010-09-18 16:06:46