Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中实现队列,但不能重写迭代器()方法_Java_Collections_Iterator_Queue_Singly Linked List - Fatal编程技术网

在Java中实现队列,但不能重写迭代器()方法

在Java中实现队列,但不能重写迭代器()方法,java,collections,iterator,queue,singly-linked-list,Java,Collections,Iterator,Queue,Singly Linked List,我试图通过在我自己的“MyQueue”类中实现队列接口来发展我对该接口的了解。但是,我想重写迭代器()方法。因为我不能同时实现迭代器和队列接口,所以我不知所措 在我的迭代器()方法中,当我将鼠标悬停在单词new QueueIterator()下面的红色下划线上时,Eclipse给了我一个错误,无法从MyQueue.QueueIterator转换为iterator 另外,当我尝试实现我的“QueueIterator”内部类时,当我将鼠标悬停在单词class下面的红色下划线上时,Eclipse会给出

我试图通过在我自己的“MyQueue”类中实现队列接口来发展我对该接口的了解。但是,我想重写迭代器()方法。因为我不能同时实现迭代器和队列接口,所以我不知所措

在我的迭代器()方法中,当我将鼠标悬停在单词
new QueueIterator()
下面的红色下划线上时,Eclipse给了我一个错误,
无法从MyQueue.QueueIterator转换为iterator

另外,当我尝试实现我的“QueueIterator”内部类时,当我将鼠标悬停在单词
class
下面的红色下划线上时,Eclipse会给出错误,
标记“class”上的语法错误,@expected

在下面的代码示例中,我删除了所有与我的问题无关的方法。我知道我必须实现这些方法来实现队列。我只是想把问题弄清楚

如何重写迭代器()方法

MyQueue类:

import java.util.Collection;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Queue;

/**
 * A custom queue class. Uses a singly-linked list.
 */
public class MyQueue<E> implements Queue {
   // the top of the queue
   private Node<E> first;
   private int size;

   /**
    * Creates new myQueue object
    */
   public MyQueue() {
      first = null;
      current = null;
      size = 0;
   }

   @Override
   public Iterator<E> iterator() {
      return new QueueIterator();
   }

  /**
   * Holds Objects and points to the next one.
   *
   */
  private class Node<E> {
     private E data;
     private Node<E> next;

     /**
      * Creates a Node object
      * @param data The Object to be held by the Node
      */
     Node(E data) {
        this.data = data;
        this.next = null;
     }

     private Node<E> getNext() {
        return this.next;
     }

     private E getData() {
        return this.data;
     }
  }

  /**
   * Iterator implementation
   */
  private class QueueIterator() {

     private Node<E> curNode;

     public QueueIterator() {
        curNode = null;
     }

     public boolean hasNext() {
        if(curNode == null && first != null) {
           return true;
        } else if (curNode.getNext() != null) {
           return true;
        } else {
           return false;
        }
     }

     public E next() {
        if(curNode == null && first != null) {
           curNode = first;
           return curNode.getData();
        }

        if(!hasNext()) {
           throw new NoSuchElementException();
        }

        curNode = curNode.getNext();
        return curNode.getData();
     }
  }
import java.util.Collection;
导入java.util.Iterator;
导入java.util.NoSuchElementException;
导入java.util.Queue;
/**
*自定义队列类。使用单链接列表。
*/
公共类MyQueue实现队列{
//排在最前面的
私有节点优先;
私有整数大小;
/**
*创建新的myQueue对象
*/
公共MyQueue(){
第一个=空;
电流=零;
尺寸=0;
}
@凌驾
公共迭代器迭代器(){
返回新的QueueIterator();
}
/**
*保存对象并指向下一个对象。
*
*/
私有类节点{
私人电子数据;
私有节点下一步;
/**
*创建节点对象
*@param data节点要保存的对象
*/
节点(E数据){
这个数据=数据;
this.next=null;
}
私有节点getNext(){
把这个还给我,下一个;
}
私有E getData(){
返回此.data;
}
}
/**
*迭代器实现
*/
私有类QueueIterator(){
私有节点;
公共队列迭代器(){
curNode=null;
}
公共布尔hasNext(){
if(curNode==null&&first!=null){
返回true;
}else if(curNode.getNext()!=null){
返回true;
}否则{
返回false;
}
}
公共教育{
if(curNode==null&&first!=null){
curNode=第一;
返回curNode.getData();
}
如果(!hasNext()){
抛出新的NoTouchElementException();
}
curNode=curNode.getNext();
返回curNode.getData();
}
}

队列迭代器
需要实现
迭代器

您不应该在这一行有括号:

  private class QueueIterator() {
应该是:

  private class QueueIterator {
实际上:

  private class QueueIterator implements Iterator<E> {
私有类QueueIterator实现迭代器{

队列迭代器
需要实现
迭代器

您不应该在这一行有括号:

  private class QueueIterator() {
应该是:

  private class QueueIterator {
实际上:

  private class QueueIterator implements Iterator<E> {
私有类QueueIterator实现迭代器{

谢谢,好像忘记去掉括号给了我一大堆奇怪的错误。我会在6分钟左右接受你的答案。谢谢,好像忘记去掉括号给了我一大堆奇怪的错误。我会在6分钟左右接受你的答案。