Sobes.tech
Middle+

Hash ir aprēķināts, grozs atrasts, ievietota jauna vērtība. Kas notiek, kad ienāk jauna vērtība ar to pašu hash (kolīzija)?

sobes.tech AI

Atbilde no AI

Go darbā ar kartēm, kad notiek haša sadursme (atšķirīgiem atslēgām ir tas pats hašs), tiek izmantota chaining metode (ķēdēšana) iekšā mucā.

Algoritms ir aptuveni šāds:

  1. Aprēķina atslēgas hašu.
  2. Pamatojoties uz hašu, tiek noteikta mucas (kaste) masīvā.
  3. Mucā tiek glabāta saraksts ar atslēgas-vertības pāriem.
  4. Pievienojot jaunu vērtību ar to pašu hašu, Go pārbauda elementus mucā un salīdzina atslēgas, izmantojot vienlīdzības funkciju.
  5. Ja atslēgas sakrīt, vērtība tiek atjaunināta.
  6. Ja atslēga ir jauna, elements tiek pievienots mucas sarakstam.

Tādējādi sadursmes tiek risinātas, glabājot vairākus elementus vienā mucā un secīgi salīdzinot atslēgas.

Piemērs:

m := make(map[string]int)
m["key1"] = 1
m["key2"] = 2 // key2 var būt ar to pašu hašu kā key1
// Pievienojot key2, Go pārbaudīs mucu un pievienos vai atjauninās vērtību