2010-11-19 11 views
0
public static void Dijk(HashMap<String, HashMap<String, Integer>> map, String go, String stop){ 
    PriorityQueue pq = new PriorityQueue(); 
    for (String x: map){ 

    } 

    } 

Bu nedenle, derleyici bana burada bir foreach döngüsünü kullanamama neden oluyor?Foreach HashMaps için geçerli değil mi? ve genel Öncelik sıra sorusu

Ayrıca bu büyük bir programın daha küçük bir bölümüdür, ancak öncelikli kuyruklarla çok fazla deneyimim olmadı <String, int> //or Integer'u tutmak için kullanmak istiyorum Bunu doğru yapıyorum? (PQ'yi temelde ikili bir yığın olarak kullanıyorum) (bu yöntem Dijkstra'nın algoritmasını uygulayacaktır)

Yardımlarınız/cevaplarınız için şimdiden teşekkür ederiz!

cevap

0

Eğer Java koleksiyonuna bir göz atın, öncelik sırası gelince

for (String x: map.keySet()){ 

} 

denemelisiniz HashMap anahtarları üzerinde yineleme yapmak niyetinde varsayarsak PriorityQueue

+0

Bu çok uzun bir gündü Maalesef ama evet kafamın nerede olduğuna emin değilim! Benim asıl kaygım anahtarları almaktı. Öncelikli sıraya eklendiğimde, eklediğimde (String, Integers) alacak mı? Onu bir harita gibi yapmaya çalıştım ama derleme yapmazdı. –

+0

Bir kod örneği/yapmaya çalıştığınız şeyin daha net bir açıklamasını verebilir misiniz? –

+0

http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm Eğer sözde kod bölümüne bakarsanız temelde yapmaya çalıştığım şeyi göreceksiniz. Genel amaç, bir kelime merdiveni yoluyla en kısa yolu bulmaktır. Ana harita sözlüğü içerir ve her öğenin alt bölgesi, komşulara ve anahtardan oldukları mesafeye sahiptir. Daha sonra Dijkstra, başlangıç ​​kelimesini hedefe değiştirmek için en kısa yolu bulmak için her seferinde birer birer hareket etmelidir. Sorunu nasıl çözeceğimi biliyorum, ancak bir PQ (String, int) –