Как переопределить метод удаления() в java.util.Iterator ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Как переопределить метод удаления() в java.util.Iterator

Сообщение Anonymous »

Мне предоставлен интерфейс List.java, который определяет List ADT и содержит методы, которые должен реализовать класс, который я пишу (LinkedList.java). Один из методов — это remove().
В List.java пишет:
/**
* Removes the head (first element) from the list and returns it.
* @return the removed element from the head of the list, null if the list is empty
*/
E remove();

Я также написал класс Node.java, который представляет отдельный узел в LinkedList с двумя переменными экземпляра, data и next (с методами получения и установки).
В моем классе LinkedList есть две переменные экземпляра: размер int (количество узлов в LinkedList) и заголовок узла (ссылка на головной узел в LinkedList). На данный момент для переопределения метода удаления() у меня есть:
public E remove() {
if (head == null) {
return null;
} else {
Node current = head;
Node previous = null;
while (current.getNext() != null) {
previous = current;
current = current.getNext();
}
Node previousNext = previous.getNext();
E currentData = current.getData();
previousNext = null;
size--;
return currentData;
}
}

Я постоянно получаю сообщение об ошибке:

Error: The return type is incompatible with java.util.Iterator.remove().

Я очень плохо разбираюсь в этом модуле, и мне нужна любая помощь.
*Изменить: весь класс LinkedList:
import java.util.Iterator;

public abstract class LinkedList extends LinkedListIterator implements List{

private int size;
private Node head;

public LinkedList() {
size = 0;
head = null;
}

public LinkedList(E[] elements) {
//creates a LinkedList from elements in array (idk yet)
}

public Node getHead() {
return head;
}

public void add(E element) {
Node node = new Node(element);
if (head == null) {
head = node;
} else {
Node current = head;
while(current.getNext() == null) {
current = current.getNext();
}
current = node;
}
size += 1;
}

public void add(int index, E element) {
Node node = new Node(element);
Node nextNode = node.getNext();
Node current = null;
Node currentNode = current.getNext();
Node temp = head;
if (index >= 0 && index = 0 && index < size) {
int i = 0;
while (current != null && i < index) {
previous = current;
current = current.getNext();
i++;
}
if (previous == null) {
current = current.getNext();
} else {
previousNode = current.getNext();
}
size--;
}
return currentData;
}

public E remove(E element) {
Node current = head;
Node previous = null;
while (current != null && !(current.getData().equals(element))) {
previous = current;
current = current.getNext();
}
if (current == null) {
current = current.getNext();
} else{
previous = current.getNext();
size--;
}
return element;
}

public E remove() {
if (head == null) {
return null;
} else {
Node current = head;
Node previous = null;
while (current.getNext() != null) {
previous = current;
current = current.getNext();
}
Node previousNext = previous.getNext();
E currentData = current.getData();
previousNext = null;
size--;
return currentData;
}
}

public E get(int index) {
Node current = head;
E currentData = current.getData();
if (index >= 0 && index < size){
int i = 0;
while (current != null && i < index) {
current = current.getNext();
i++;
}
}
return currentData;
}

public boolean contains(E element) {
Node current = head;
boolean result = false;
while (current != null) {
if (current.getData().equals(element)) {
result = true;
}
current = current.getNext();
}
return result;
}

public E set(int index, E element) {
Node current = head;
E currentData = current.getData();
if (index >= 0 && index < size) {
int i = 0;
while (current != null && i < index) {
current = current.getNext();
i++;
}
currentData = element;
}
return currentData;
}

public void clear() {
size = 0;
head = null;
}

public boolean isEmpty() {
return size == 0;
}

public int size() {
return size;
}

public void removeDuplicates() {
Node temp = head;
while (temp != null) {
Node temp2 = temp.getNext();
int i = 0;
while (temp2 != null) {
if (temp2.getData().equals(temp.getData())) {
remove(i);
} else {
i++;
temp2 = temp2.getNext();
}
}
temp = temp.getNext();
}
}

public E[] toArray() {
E[] arr = (E[]) new Object[size];
Node current = head;
int i = 0;
while (current != null) {
arr[i++] = current.getData();
current = current.getNext();
}
return arr;
}

public Iterator iterator() {
return new LinkedListIterator();
}
}


Подробнее здесь: https://stackoverflow.com/questions/730 ... l-iterator

Вернуться в «JAVA»