Мне нужно, чтобы вы ознакомились с моей реализацией Единого связанного списка (SLL), пожалуйста. Реализация должна использовать дженерики и иметь возможность использовать расширенный для.
Проблема в том, что когда я for (Number n : list)
являюсь list
a MyLinkedList<Integer>
или MyLinkedList<Double>
, я получаю сообщение об ошибке: «Несоответствие типов: невозможно преобразовать тип элемента из объекта в Число».
Это то, что у меня есть. Части, в которых я не очень уверен, - это дженерики и итераторы.
Заранее спасибо.
import java.util.Iterator;
public class MyLinkedList<T> implements Iterable<Object>
{
private Node head;
public MyLinkedList ()
{
head = null;
}
public void add (Node n)
{
if (head == null)
{
head = n;
}
else
{
Node node = head;
while (node.next != null)
{
node = node.next;
}
node = n;
}
}
public Iterator iterator()
{
return new MyLinkedListIterator (head);
}
public int size ()
{
int ret = 0;
MyLinkedListIterator it = new MyLinkedListIterator (head);
while (it.hasNext ())
{
it.next();
ret++;
}
return ret;
}
public Node getHead ()
{
return head;
}
}
class MyLinkedListIterator<T> implements Iterator
{
private Node node;
public MyLinkedListIterator (Node h)
{
node = h;
}
public MyLinkedListIterator (MyLinkedList<T> l)
{
this(l.getHead ());
}
public boolean hasNext ()
{
if (node.next == null)
{
return false;
}
else
{
return true;
}
}
public Object next ()
{
return node.next;
}
public void remove ()
{
}
}