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

için tanımlanmamıştır. Bir LinkedList türü getFirst() yöntemine sahip olmalı, neden bu program buna izin vermiyor? Ben bir pop kullanarak bile iyiyim, eğer bu mümkün ise bir kuyruk var, ancak bu da işe yarayıp yaramadığından emin değilim.yöntem GetFirst() tipi Sırasına <Vertex>

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

kullanılabilir olması için Ama bir 'BağlantılıList' değil, bir Kuyruğa bir başvuru var. "LinkedList" ile ilgili yöntemleri kullanmak istiyorsanız, 'nV'yi' LinkedList 'olarak değiştirin. –

+0

Burada "getFirst" görüyor musunuz? Https://docs.oracle.com/javase/8/docs/api/java/util/Queue.html? – Tunaki

+0

@Tunaki lütfen sorumu okuyun ve karışıklığımı anlamaya çalışın, bir kuyruğun getFirst yöntemine sahip olmadığını biliyorum, Bağlantılı Liste olarak başlattığım tiplerle karışıklık içerisindeyim, bu yüzden bu tür bir erişimin olması gerektiğini düşündüm. İlk yorum önerisini deneyeceğim – Pim

cevap

0

ben aradığınız yöntem peek yöntem olduğuna inanıyoruz. peek yöntemi, sıranın ilk öğesini sıradan kaldırmadan döndürür. Ancak, ilk öğeyi sıradan kaldırmak isterseniz, bir öğeyi sıradan deşifre eden remove yöntemini kullanın.

Değişim için nV.getFirst() ya nV.peek() veya nV.remove()

0

Bu deneyin, GetFirst() yöntemini açığa vermez tip Kuyruğu bir pointer, için LinkedList örneğini atama gibidir:

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

LinkedList sınıfı, Kuyruk arabirimini uygular, ancak getFirst() yöntemi, Deque öğesinden devralınır, aslında,

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

getFirst() yöntemi

İlgili konular