यदि मैं जावा के TreeSet
में log(n)
समय में उच्चतम प्रविष्टि को हटाना चाहता हूं, तो मैं treeSet.pollFirst()
का उपयोग करता हूं - स्कैला के mutable.TreeSet
कक्षा के बराबर क्या है?स्कैला के ट्रीसेट बनाम जावा के ट्रीसेट - मतदान?
वैसे भी, जो मैं वास्तव में चाहता हूं वह एक ढेर जैसी प्राथमिकता कतार डेटा संरचना है जो मुझे removeMax
, add
और updatePriority
लॉगरिदमिक समय में देता है। मैं स्काला संग्रह पुस्तकालय को देखा और मैं उलझन में हूँ - में यह (मैं hackily स्कैन और आइटम को हटा दें और करना होगा लॉग समय में प्राथमिकता अद्यतन करने के लिए कोई रास्ता नहीं प्रदान करता है फिर से जोड़ - जबकि mutable.PriorityQueue
मुझे देता है deque
(यानी removeMax
) लघुगणक समय में रैखिक समय)। इसी तरह mutable.TreeSet
मुझे प्राथमिकता अद्यतन लघुगणक समय में लेकिन यह एक removeMax
(अर्थात pollFirst
) आपरेशन नहीं है (hackily को हटाने और फिर से जोड़ कर) देना होगा। मुझे किस संग्रह कंटेनर का उपयोग करना चाहिए? कृपया मुझे बाहरी निर्भरताओं के बारे में संदर्भित न करें।
आप कैसे सोच रहे हैं 'अपडेट प्राथमिकता' जावा के 'ट्रीसेट' के साथ काम करेगा? – sharakan
आसान (माना जाता है कि आपने अज्ञात वर्ग के साथ ट्रीसेट को ओवरराइड करके बाहरी तुलनित्र परिभाषित किया है)। आप बस हटाएं और नोड जोड़ें। मेरा उदाहरण देखें। यहां लाइन 1 9 और लाइन 33-36 देखें: https://github.com/pathikrit/scalgos/blob/master/temp/SandBox/AStar.java – pathikrit
सही, समझ में आता है। हालांकि इसे अपडेट करने से पहले आपको नोड को हटा देना चाहिए। – sharakan