问题创建自己的LinkedList

时间:2014-02-11 05:22:26

标签: java linked-list

我已经创建了自己的LinkedList,并且遇到了我的一个方法的类型问题。 我一直收到错误:

Error: /Users/randymartinuzzi/Documents/EECS 233/FBLinkedList.java:100: incompatible types
found   : java.lang.Object
required: FBLinkedList.Node

我的程序运行时的任何时间: Node n = iterator().next();n = iterator().next();

我不确定为什么这是因为我的方法next()返回一个Node。

我已在下面附上我的完整代码。任何有关该问题的建议都将受到高度赞赏。

import java.util.*;

public class FBLinkedList implements Iterable, FBList {

  private Node front;
  private Person tempPerson;
  private Node tempNode;


  public FBLinkedList() {
    front = null;
  }
  ///////////////
  public int size() {
    int count = 0;
    Node nodeptr = getFront();
    while (nodeptr != null) {
      count++;
      nodeptr = nodeptr.getNext();
    }
    return count;
  }
  //////////////

  public Person lookup(int i){

    if(i<0 || this.size() >0) {
      throw new ArrayIndexOutOfBoundsException();
    }

    else if(i<this.size()) {

      Node n = iterator().next();

      for(int index = 0; index < i; index++) {
        n = iterator().next();
      }
      return n.getElement();
    }

  }

  protected Node getFront() {
    return front;
  }


  protected void setFront(Node front) {
    this.front = front;
  }

  public Iterator iterator() {
    return new ListIterator(getFront());
  }

  public static class Node {

    private Person element;


    private Node next;


    public Node(Person element, Node next) {
      this.element = element;
      this.next = next;
    }


    public Person getElement() {
      return element;
    }

    public Node getNext() {
      return next;
    }

    public void setNext(Node next) {
      this.next = next;
    }
  }



  private static class ListIterator implements Iterator {

    private Node nodeptr;

    public ListIterator(Node first) {
      nodeptr = first;
    }

    @Override
    public boolean hasNext() {
      return (nodeptr != null);
    }

    @Override
    public Node next() {
      try {
        Node element = nodeptr;
        nodeptr = nodeptr.getNext();
        return element;
      } 
      catch (NullPointerException e) {
        throw new NoSuchElementException();
      }
    }

  }
}

1 个答案:

答案 0 :(得分:0)

为LinkedList实现类型安全的Iterable<E>接口。

public class FBLinkedList implements Iterable<Node>...{...}

它会将Iterator iterator()泛型方法更改为特定的Iterator<Node> iterator()方法。