我正在根据我的教师的要求用ArrayList编写一个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初始化为
Deque<Character> = new deck Deque<Character>()
我用一个单独的测试类测试了我的Deque,我很确定它正常工作。但是每次我尝试运行这个读类时,都会在deck.addToBack(字符)行引起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();
}
}
答案 0 :(得分:1)
while (!endOfFile) {
character = inputFile.readChar();
while (!character.equals('\u0003')) {
if (character.equals('\u0008'))
deck.removeBack();
else
deck.addToBack(character);
}
}
检查外环退出条件。
readChar
是否返回-1表示数据结束?这可能会导致无限循环,从而导致内存耗尽。