Ich bin ein Anfänger in Programmierung und ich muss eine Art eigene LinkedList schreiben, aber nur mit add(E element)
Methode und mit Iterator hasNext()
und next()
. Hier ist mein Code:NPE in eigener Realisierung von LinkedList (Java)
public class LinkedArray<E> implements Iterator<E> {
private int size = 0;
private int current = 0;
private Node<E> first;
private Node<E> last;
private Objects[] objects = new Objects[10];
public void add(E value) {
Node<E> element = new Node<E>(last, value, null);
if (last != null) {
element.next = element;
} else {
first = element;
}
last = element;
size++;
}
@Override
public boolean hasNext() {
boolean result = false;
try {
if (objects[current + 1] != null) {
result = true;
}
} catch (ArrayIndexOutOfBoundsException e) {
result = false;
}
return result;
}
@Override
public E next() {
E result;
try {
current++;
result = (get(current - 1));
} catch (ArrayIndexOutOfBoundsException a) {
throw new NoSuchElementException("No more elements in list.");
}
return result;
}
public E get(int position) throws NullPointerException {
Object result;
if (this.objects[position] != null) {
result = this.objects[position];
} else {
throw new NullPointerException("Position is empty.");
}
return (E) result;
}
private class Node<E> {
private E element;
private Node<E> next;
private Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
this.element = element;
this.next = next;
this.prev = prev;
}
}
}
Aber als ich anfing, in den Test (E-Wert) ...
@Test
public void test() {
LinkedArray<String> arr = new LinkedArray<>();
String string = "Test";
arr.add(string);
String result = arr.next();
assertThat(result, is("Test"));
}
... ich nur einen Fehler. Was ist das Problem, warum bekomme ich es falsch?
Post den Fehler (Stacktrace) Sie erhalten – hanumant
@hanumant es ist nur "java.lang.NullPointerException: Position ist leer." in E get (int Position) -Methode. – blackHorsie
dann entweder wird es nicht korrekt hinzugefügt oder Sie greifen nicht richtig darauf zu –