Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 221|Svar: 1

[Kilde] . PriorityQueue prioritetskø i NET6

[Kopier link]
Opslået den 20-10-2025 10:02:53 | | | |
.NET 6 introducerer en ny samlingstype, PriorityQueue, som, som navnet antyder, tilføjer prioritetsunderstøttelse oven på almindelig Queue. Bemærk: Det er hanIkke-gevindsikker, du skal være opmærksom på trådsikkerhed.

Kilde:Hyperlink-login er synlig.

Kom i gang

Lad os se på et simpelt eksempel på brug:
Eksempeloutput:



Du kan se, at rækkefølgen af output er modsat den rækkefølge, vi tilføjede, PriorityQueue starter med den mindste prioritet ved dequeue, jo mindre værdi, jo højere prioritet, jo højere prioritet, jo højere prioritet, jo højere prioritet, jo mere prioritet output, hvis vi vil have det maksimale output først, er det okay, svaret er ja, men vi skal specificere vores egne prioriteringssammenligningsregler, du kan se følgende eksempel

Scener

Med automatisk sortering med prioritet kan vi overveje at bruge PriorityQueue, når vi skal lave noget automatisk sortering

Beskedkø

Med PriorityQueue kan en prioritetsbeskedkø implementeres, hvilket tillader brugere at angive prioriteten på en besked, når de sender en besked, og den vil blive prioriteret ved forbrug.

I eksemplet ovenfor angiver vi en int som typen Priority som standard og samler nogle beskeder i køen, men der er ofte mange beskeder, og der kan være situationer med samme prioritet, som vi kan brugeTid og Int som en fødereret prioritetstypeDu kan henvise til følgende eksempel:
Et eksempel på outputtet er som følger:



Ud fra ovenstående resultater kan det ses, at i tilfælde af prioritet vil vi først behandle beskeder med kortere tid, eller vi kan tilpasse sorteringsmetoden efter vores egne behov og tilpasse prioriteringssammenligningslogikken.

Rang

PriorityQueue kan også bruges i mange rangeringsapplikationer, såsom en rangering af studerendes præstationer

Tag et kig på eksempelkoden nedenfor:
Ovenstående liste er en liste over karakterer, skriv blot nogle testdata, gennem PriorityQueues UnorderedItems kan vi hente dataene før sortering, og det er også rækkefølgen, vi går ind i køen (Enqueue), standardsammenligningen er den lille først, det vil sige, den lave score er først, derefter vil vi sortere fra størst til mindst, vi skal tilpasse sammenligningsmetoden.

Ovenstående High2LowComparer er en brugerdefineret sammenligning, som faktisk er en invers af sammenligningsresultatet, og koden er som følger:
Outputtet ovenfor er som følger:



Mere

Der findes en zset(sortedSet)-type data i Redis, som kan gøre lignende ting, men der er stadig nogle forskelle mellem zset og PriorityQueue; zset er et sæt, en samling der automatisk dedupliceres, mens PriorityQueue stadig er en kø, vil ikke blive dedupliceret; zset kan ændre prioriteten (scoren) for det tilsvarende element, men PriorityQueue I øjeblikket understøttes det ikke at ændre den tilsvarende prioritet for et element

PriorityQueue kan løse nogle af vores problemer, men der er et par ting, du skal huske på, når du bruger det:

  • For det første, hvis prioriteten er den samme, kan rækkefølgen af outputtet være anderledes, hvilket bestemmes af dens interne implementeringsalgoritme, og rækkefølgen kan ikke garanteres strengt
  • PriorityQueue er ikke-trådsikker, og trådsikre problemer skal bemærkes
  • Peek-metoden i PriorityQueue henter kun det kommende element i køen, men fjerner det ikke fra køen
(Slut)




Tidligere:Douyin Mall crawler analyse positionering 6 guder, risikokontrolanalyse, nu burde det være 7 guder X-Perseus
Næste:Links til EBPF-relateret viden
 Udlejer| Opslået den 20-10-2025 kl. 10:09:05 |
Typiske anvendelsesscenarier

Hospitalets nødopkald, opgaveplanlægningssystem, for eksempel: prioriteret opkald for kritisk syge patienter, koden er som følger:
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com