Java'nın TreeSet
numaralı sürümünde en yüksek girişi log(n)
zamanında kaldırmak istiyorsam, treeSet.pollFirst()
kullanıyorum - Scala'nın mutable.TreeSet
sınıfının karşılığı nedir?Scala's TreeSet - Java'nın TreeSet'i - anket?
Her neyse, gerçekten istediğim, logaritmik zamanda removeMax
, add
ve updatePriority
sağlayan bir yığın benzeri öncelikli sıra yapısı yapısıdır. Scala koleksiyon kütüphanesine baktım ve kafam karıştı - mutable.PriorityQueue
, logaritmik zamanda deque
(yani removeMax
) izin verirken - günlükte önceliği güncellemenin bir yolunu sağlamaz (hacimce öğeyi taramak ve kaldırmak zorundayım. doğrusal zaman). Benzer şekilde, mutable.TreeSet
, logaritmik zamanda önceliği güncellememe izin verir (hacizce silip yeniden ekleyerek) ancak removeMax
(yani pollFirst
) işlemine sahip değildir. Hangi koleksiyonları kullanmalıyım? Lütfen beni dış bağımlılıklara yönlendirmeyin.
"updatePriority" nin Java'nın TreeSet ile çalışacağını nasıl düşünüyorsunuz? – sharakan
Kolay (TreeSet'i anonim bir sınıfla geçersiz kılarak bir dış karşılaştırıcı tanımladığınız varsayılarak). Sadece düğümü silip ekleyin. Örneğime bak. 19. satır ve 33-36 numaralı hatlara bakın: https://github.com/pathikrit/scalgos/blob/master/temp/SandBox/AStar.java – pathikrit
Doğru, mantıklı. Güncellemeden önce düğümü kaldırmalısınız. – sharakan