Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 221|Atsakyti: 1

[Šaltinis] . PriorityQueue prioriteto eilė NET6

[Kopijuoti nuorodą]
Publikuota: 2025-10-20 10:02:53 | | | |
.NET 6 pristato naują rinkinio tipą PriorityQueue, kuris, kaip rodo jo pavadinimas, prideda prioritetinį palaikymą prie įprastos eilės. Pastaba: Jis yraNesaugus sriegiams, turite atkreipti dėmesį į sriegių saugos klausimus.

Šaltinis:Hipersaito prisijungimas matomas.

Pradėti

Pažvelkime į paprastą naudojimo pavyzdį:
Išvesties pavyzdys:



Galite pamatyti, kad išvesties tvarka yra priešinga mūsų pridėtai tvarkai, "PriorityQueue" prasideda mažiausiu prioritetu, kai išeinama iš eilės, kuo mažesnė reikšmė, tuo didesnis prioritetas, tuo didesnis prioritetas, tuo didesnis prioritetas, tuo didesnis prioritetas, tuo didesnis prioritetas išvestis, jei pirmiausia norime maksimalios išvesties, ar gerai, atsakymas yra taip, bet turime nurodyti savo prioritetų palyginimo taisykles, galite remtis šiuo pavyzdžiu

Scenos

Naudodami automatinį rūšiavimą su prioritetu, galime apsvarstyti galimybę naudoti "PriorityQueue", kai reikia atlikti automatinį rūšiavimą

Pranešimų eilė

Naudojant "PriorityQueue", galima įdiegti prioritetinių pranešimų eilę, leidžiančią vartotojams nurodyti pranešimo prioritetą siunčiant pranešimą, o vartojant jam bus teikiama pirmenybė.

Aukščiau pateiktame pavyzdyje pagal numatytuosius nustatymus nurodome int kaip prioriteto tipą ir kai kuriuos pranešimus sujungiame į eilę, tačiau dažnai yra daug pranešimų ir gali būti situacijų su tuo pačiu prioritetu, kurias galime naudotiLaikas ir int kaip federacinio prioriteto tipasGalite remtis šiuo pavyzdžiu:
Išvesties pavyzdys yra toks:



Iš aukščiau pateiktų rezultatų matyti, kad prioriteto atveju pirmiausia apdorosime pranešimus per trumpesnį laiką arba galime pritaikyti rūšiavimo metodą pagal savo poreikius ir pritaikyti prioritetų palyginimo logiką.

Rangas

"PriorityQueue" taip pat gali būti naudojamas daugelyje reitingavimo programų, pvz., mokinių rezultatų reitingavimui

Pažvelkite į toliau pateiktą kodo pavyzdį:
Aukščiau pateiktas sąrašas yra pažymių sąrašas, tiesiog parašykite keletą testo duomenų, naudodami "PriorityQueue" UnorderedItems galime gauti duomenis prieš rūšiuodami, taip pat tai yra tvarka, kuria prisijungiame prie eilės (Enqueue), numatytasis palyginimas yra mažas, tai yra, žemas balas yra pirmas, tada norime rūšiuoti nuo didžiausio iki mažiausio, turime pritaikyti palyginimo metodą.

Aukščiau pateiktas High2LowComparer yra pasirinktinis palyginimas, kuris iš tikrųjų yra atvirkštinis palyginimo rezultatui, o kodas yra toks:
Aukščiau pateikta išvestis yra tokia:



Daugiau

Redis yra zset(sortedSet) tipo duomenys, kurie gali atlikti panašius dalykus, tačiau vis dar yra tam tikrų skirtumų tarp zset ir PriorityQueue, zset yra rinkinys, rinkinys, kuris automatiškai pašalina dublikatus, o PriorityQueue vis dar yra eilė nebus pašalinta, zset gali keisti atitinkamo elemento prioritetą (balą), bet PriorityQueue Šiuo metu nepalaikomas atitinkamo elemento prioriteto keitimas

"PriorityQueue" gali išspręsti kai kurias mūsų problemas, tačiau ją naudojant reikia atsiminti keletą dalykų:

  • Visų pirma, jei prioritetas yra tas pats, išvesties tvarka gali būti skirtinga, kurią lemia jo vidinis įgyvendinimo algoritmas, o tvarka negali būti griežtai garantuota
  • "PriorityQueue" nėra saugi gijomis, todėl reikia atkreipti dėmesį į saugias gijų problemas
  • "Peek" metodas "PriorityQueue" gaus tik būsimą elementą iš eilės, bet nepašalins jo iš eilės
(Pabaiga)




Ankstesnis:Douyin Mall vikšrinis analizė padėties 6 dievai, rizikos kontrolės analizė, dabar tai turėtų būti 7 dievai X-Perseus
Kitą:Nuorodos į su EBPF susijusias žinias
 Savininkas| Publikuota: 2025-10-20 10:09:05 |
Tipiški taikymo scenarijai

Ligoninės skubios pagalbos iškvietimas, užduočių planavimo sistema, pavyzdžiui: prioritetinis skambutis sunkiai sergantiems pacientams, kodas yra toks:
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com