Sobes.tech
Middle+

ჰეში გამოითვალა, ბაკეტი იპოვეს, ახალი მნიშვნელობა შეიყვანეს. რა ხდება, როდესაც ახალი მნიშვნელობა იგივე ჰეშით მოდის (კოლიზია)?

sobes.tech AI

პასუხი AI-სგან

Go-ში, როდესაც მუშაობთ რუკებთან, როდესაც ხდება ჰეშის შეჯახება (სხვადასხვა გასაღებები აქვს ერთსა და იმავე ჰეშს), გამოიყენება chaining მეთოდი (ზვიგზა) ბაკეტის შიგნით.

ალგორითმი დაახლოებით ასეა:

  1. ჰეშის გამოთვლა გასაღზე.
  2. ჰეშის საფუძველზე, განსაზღვრულია ბაკეტი (კაფა) ბაკეტების მასივში.
  3. ბაკეტში ინახება წყვილები გასაღები-ღირებულების.
  4. ახალი მნიშვნელობის დამატებისას, რომელიც აქვს იგივე ჰეშს, Go გადის ბაკეტში და შედარებს გასაღებს თანასწორობის ფუნქციის გამოყენებით.
  5. თუ გასაღები ემთხვევა, ღირებულება განახლდება.
  6. თუ გასაღები ახალია, ელემენტი ემატება ბაკეტის სიას.

ამ გზით, შეჯახებები მართვადია, რადგან ერთ ბაკეტში ინახება რამდენიმე ელემენტი და გასაღებები სექვენტულად შედარებულია.

მაგალითი:

m := make(map[string]int)
m["key1"] = 1
m["key2"] = 2 // key2 შეიძლება ჰქონდეს იგივე ჰეში, რაც key1-ს
// key2-ის დამატებისას, Go შეამოწმებს ბაკეტს და დაამატებს ან განაახლებს ღირებულებას