Je suis en train d'écrire une implémentation de deque avec ArrayList comme requis par mon instructeur. Jusqu'à présent, le corps de la classe ressemble à ceciProblème lors de la lecture d'un fichier binaire dans un fichier
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;
}
Le deque est initialisé comme
Deque<Character> = new deck Deque<Character>()
J'ai testé mon Deque avec une classe de test séparé et je suis tout à fait sûr qu'il fonctionne correctement . Mais chaque fois que j'essaie d'exécuter cette classe de lecture, elle provoque une java.lang.OutOfMemoryError sur la ligne deck.addToBack (character). Qu'est-ce qui cause le problème et comment peut-il être évité?
Modifier: Ma mise en œuvre de la Deque. L'interface a été fournie par mon instructeur.
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();
}
}
Si votre implémentation deque provoque OutOfMemoryError, cela signifie que vous devez vérifier l'implémentation elle-même. Pas le code de test. À l'heure actuelle, il n'y a aucun moyen de parler de la cause de l'erreur. –
Merci. Implémentation ajoutée. S'il vous plaît, jetez un oeil. – Francis