|
|
Publicēts 2025-10-20 10:02:53
|
|
|
|

.NET 6 ievieš jaunu kolekcijas veidu PriorityQueue, kas, kā norāda nosaukums, pievieno prioritāro atbalstu papildus parastajai rindai. Piezīme: Viņš irNav drošs vītņiem, jums jāpievērš uzmanība vītņu drošības jautājumiem.
Avots:Hipersaites pieteikšanās ir redzama.
Sāktu
Apskatīsim vienkāršu lietošanas piemēru:
Izvades piemērs:
Jūs varat redzēt, ka izvades secība ir pretēja mūsu pievienotajai secībai, PriorityQueue sākas ar mazāko prioritāti, kad izslēdzam no rindas, jo mazāka vērtība, jo augstāka prioritāte, jo augstāka prioritāte, jo augstāka prioritāte, jo lielāka prioritāte izvade, ja mēs vispirms vēlamies maksimālo izvadi, vai tas ir labi, atbilde ir jā, bet mums ir jānorāda savi prioritāšu salīdzināšanas noteikumi, varat atsaukties uz šādu piemēru
Ainas
Izmantojot automātisko kārtošanu ar prioritāti, mēs varam apsvērt iespēju izmantot PriorityQueue, kad mums ir jāveic automātiskā kārtošana
Ziņojumu rinda
Izmantojot PriorityQueue, var ieviest prioritāro ziņojumu rindu, ļaujot lietotājiem norādīt ziņojuma prioritāti, nosūtot ziņojumu, un tas tiks piešķirts par prioritāti, patērējot.
Iepriekš minētajā piemērā mēs pēc noklusējuma norādām int kā prioritātes veidu un apvienojam dažus ziņojumus rindā, taču bieži vien ir daudz ziņojumu, un var būt situācijas ar tādu pašu prioritāti, kuras mēs varam izmantotLaiks un int kā federatīvās prioritātes tipsJūs varat atsaukties uz šādu piemēru:
Izvades piemērs ir šāds:
No iepriekš minētajiem rezultātiem var redzēt, ka prioritātes gadījumā mēs vispirms apstrādāsim ziņojumus ar mazāku laiku, vai arī mēs varam pielāgot šķirošanas metodi atbilstoši savām vajadzībām un pielāgot prioritāšu salīdzināšanas loģiku.
Rank
PriorityQueue var izmantot arī daudzās ranžēšanas lietojumprogrammās, piemēram, studentu snieguma vērtējumā
Apskatiet tālāk redzamo koda piemēru:
Iepriekš minētais saraksts ir pakāpju saraksts, vienkārši uzrakstiet dažus testa datus, izmantojot PriorityQueue's UnorderedItems, mēs varam iegūt datus pirms kārtošanas, un tā ir arī secība, kādā mēs pievienojamies rindai (Enqueue), noklusējuma salīdzinājums ir mazais vispirms, tas ir, zemais rezultāts ir vispirms, tad mēs vēlamies kārtot no lielākajiem līdz mazākajiem, mums ir jāpielāgo salīdzināšanas metode.
Iepriekš minētais High2LowComparer ir pielāgots salīdzinājums, kas faktiski ir apgriezts salīdzinājuma rezultātam, un kods ir šāds:
Iepriekš minētā izeja ir šāda:
Vairāk
Redis ir zset(sortedSet) tipa dati, kas var darīt līdzīgas lietas, taču joprojām ir dažas atšķirības starp zset un PriorityQueue, zset ir kopa, kolekcija, kas automātiski dedublējas, kamēr PriorityQueue joprojām ir rinda netiks dedublēta, zset var modificēt attiecīgā elementa prioritāti (rezultātu), bet PriorityQueue Pašlaik netiek atbalstīts elementa atbilstošās prioritātes modificēšana
PriorityQueue var atrisināt dažas no mūsu problēmām, taču, lietojot to, ir jāpatur prātā dažas lietas:
- Pirmkārt, ja prioritāte ir vienāda, izvades secība var būt atšķirīga, ko nosaka tā iekšējais ieviešanas algoritms, un secību nevar stingri garantēt
- PriorityQueue nav drošs pret pavedieniem, un ir jāatzīmē ar pavedieniem drošas problēmas
- Ieskata metode PriorityQueue iegūs tikai gaidāmo elementu rindā, bet nenoņems to no rindas
(Beigas) |
Iepriekšējo:Douyin Mall rāpuļķēdes analīze, kas pozicionē 6 dievus, riska kontroles analīze, tagad tam vajadzētu būt 7 dieviem X-PerseusNākamo:Saites uz zināšanām, kas saistītas ar EBPF
|