Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 221|Svare: 1

[Kilde] . PriorityQueue prioritetskø i NET6

[Kopier lenke]
Publisert 2025-10-20 10:02:53 | | | |
.NET 6 introduserer en ny samlingstype, PriorityQueue, som, som navnet antyder, legger til prioritetsstøtte oppå vanlig Queue. Merk: Det er hanIkke-gjengesikker, du må være oppmerksom på trådsikkerhet.

Kilde:Innloggingen med hyperkoblingen er synlig.

Kom i gang

La oss se på et enkelt eksempel på bruk:
Eksempelutdata:



Du kan se at rekkefølgen på output er motsatt av rekkefølgen vi la til, PriorityQueue starter med lavest prioritet ved dequeue, jo lavere verdi, jo høyere prioritet, jo høyere prioritet, jo høyere prioritet, jo høyere prioritet, jo høyere prioritet er output, hvis vi vil ha maksimal output først, er det greit, svaret er ja, men vi må spesifisere våre egne prioriteringssammenligningsregler, du kan se følgende eksempel

Scener

Med automatisk sortering med prioritet kan vi vurdere å bruke PriorityQueue når vi trenger å gjøre automatisk sortering

Meldingskø

Med PriorityQueue kan en prioritert meldingskø implementeres, slik at brukere kan spesifisere prioriteten til en melding når de sender en melding, og den vil bli prioritert ved forbruk.

I eksempelet ovenfor spesifiserer vi en int som typen Priority som standard, og slår sammen noen meldinger i køen, men det er ofte mange meldinger, og det kan være situasjoner med samme prioritet som vi kan brukeTid og intelligens som en føderert prioritetstypeDu kan se på følgende eksempel:
Et eksempel på utgangen er som følger:



Fra resultatene ovenfor kan man se at i tilfelle prioritet vil vi først behandle meldinger med kortere tid, eller vi kan tilpasse sorteringsmetoden etter egne behov, og tilpasse prioriteringssammenligningslogikken.

Rang

PriorityQueue kan også brukes i mange rangeringsapplikasjoner, som rangering av studentprestasjoner

Ta en titt på eksempelkoden nedenfor:
Listen over er en liste over karakterer, bare skriv noen testdata, gjennom PriorityQueues UnorderedItems kan vi hente dataene før sortering, og det er også rekkefølgen vi går inn i køen (Enqueue), standardsammenligningen er den lille først, det vil si at lavpoengsummen er først, så vil vi sortere fra størst til minst, vi må tilpasse sammenligningsmetoden.

High2LowComparer ovenfor er en tilpasset sammenligning, som faktisk er en invers av sammenligningsresultatet, og koden er som følger:
Resultatet ovenfor er som følger:



Mer

Det finnes en zset(sortedSet)-type data i Redis som kan gjøre lignende ting, men det er fortsatt noen forskjeller mellom zset og PriorityQueue; zset er en mengde, en samling som automatisk dedupliseres, mens PriorityQueue fortsatt er en kø vil ikke bli deduplisert, zset kan endre prioritet (score) til det tilsvarende elementet, men PriorityQueue For øyeblikket støttes det ikke å endre den tilsvarende prioriteten til et element

PriorityQueue kan løse noen av problemene våre, men det er noen ting å huske på når du bruker det:

  • Først og fremst, hvis prioriteten er den samme, kan rekkefølgen på utdataene være annerledes, noe som bestemmes av dens interne implementasjonsalgoritme, og rekkefølgen kan ikke garanteres strengt
  • PriorityQueue er ikke trådsikker, og trådsikre problemer må nevnes
  • Peek-metoden i PriorityQueue henter kun det kommende elementet i køen, men fjerner det ikke fra køen
(Slutt)




Foregående:Douyin Mall crawler analyse posisjonering 6 guder, risikokontrollanalyse, nå burde det være 7 guder X-Perseus
Neste:Lenker til EBPF-relatert kunnskap
 Vert| Publisert 2025-10-20 10:09:05 |
Typiske bruksscenarier

Sykehusets nødanrop, oppgaveplanleggingssystem, for eksempel: prioritert anrop for kritisk syke pasienter, koden er som følger:
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com