对于Queue <vertex>类型,未定义getFirst()方法

时间:2016-03-27 14:29:12

标签: java collections linked-list queue

@Override
public Vertex next() {
   Queue<Vertex> nV = new LinkedList<Vertex>(graph.getNeighbours(this.sV));
   System.out.println(nV.getFirst());
   return nV.getFirst();
}

上面我声明了一个队列nV,它是一个由链接列表实例化的队列。 LinkedList类型应该有方法getFirst(),为什么这个程序不允许它?即使使用pop我也没关系,因为如果可能的话,它就是一个队列,但不确定是否有效。

ERROR at solution.java (at line 42)
return nV.getFirst();
          ^^^^^^^^
The method getFirst() is undefined for the type Queue<Vertex>

2 个答案:

答案 0 :(得分:0)

我相信您正在寻找的方法是 ... MAX(BatInnings.Runs) AS varchar(3)) + CASE WHEN sum(case when BatInnings.fk_HowOut_Id = 7 then 1 else 0 end)>0 THEN '*' ELSE ''END) AS 'High Score' ... 方法。 peek方法返回队列的第一个元素,而不将其从队列中删除。但是,如果您确实希望从队列中删除第一个元素,那么请使用peek方法,该方法将队列中的元素出列。

remove更改为nV.getFirst()nV.peek()

答案 1 :(得分:0)

您正在将LinkedList实例分配给Queue类型的指针,该指针不公开getFirst()方法,请尝试使用:

@Override
public Vertex next() {
 LinkedList<Vertex> nV = new LinkedList<Vertex>(graph.getNeighbours(this.sV));
 System.out.println(nV.getFirst());
 return nV.getFirst();
}

LinkedList类实现了Queue接口,但getFirst()方法是从Deque继承的,实际上你也可以这样做

Deque nV = new LinkedList<Vertex>(graph.getNeighbours(this.sV));

使getFirst()方法可用