2016-03-27 7 views
-1
@Override 
public Vertex next() { 
    Queue<Vertex> nV = new LinkedList<Vertex>(graph.getNeighbours(this.sV)); 
    System.out.println(nV.getFirst()); 
    return nV.getFirst(); 
} 

Above I eine Warteschlange nV angeben, die eine Warteschlange von einer verketteten Liste instanziiert wird. Ein LinkedList-Typ sollte die Methode getFirst() haben, warum wird dieses Programm es nicht zulassen? Ich bin in Ordnung mit sogar eine pop, da es eine Warteschlange ist, wenn dies möglich ist, aber nicht sicher, ob das auch funktioniert.Verfahren getFirst() ist nicht definiert für den Typ Queue <Vertex>

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

Aber Sie haben einen Verweis auf eine 'Queue', keine 'LinkedList'. Ändern Sie "nV" in "LinkedList ", wenn Sie Methoden verwenden möchten, die für "LinkedList" spezifisch sind. –

+0

Sehen Sie hier ein 'getFirst' https://docs.oracle.com/javase/8/docs/api/java/util/Queue.html? – Tunaki

+0

@Tunaki Bitte lesen Sie meine Frage und versuchen, meine Verwirrung zu verstehen, ich weiß, eine Warteschlange hat keine verdammte getFirst-Methode, ich bin in Verwirrung mit den Typen, wie ich es als Linkedlist instanziieren, so dachte, es sollte Zugriff auf diesen Typ haben. Ich schätze, ich werde den ersten Kommentar Vorschlag versuchen – Pim

Antwort

0

Ich glaube, die Methode Sie suchen die Methode peek ist. Die Methode peek gibt das erste Element der Warteschlange zurück, ohne es aus der Warteschlange zu entfernen. Wenn Sie jedoch das erste Element aus der Warteschlange entfernen möchten, verwenden Sie die Methode remove, die ein Element aus der Warteschlange entfernt.

ändern nV.getFirst() entweder nV.peek() oder nV.remove()

0

Sie sind die LinkedList-Instanz auf einen Zeiger vom Typ Queue zuweisen, die nicht die getFirst() -Methode aussetzt, mit diesem versuchen:

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

Die Die LinkedList-Klasse implementiert die Warteschlangenschnittstelle, aber die getFirst() -Methode wird von der Deque übernommen. Sie können auch

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

Um die Methode getFirst() verfügbar zu haben

Verwandte Themen