Sobes.tech
Junior — Middle

შეგიძლიათ ახსნათ ჰეშირების მუშაობის პრინციპი რუკის (Map) განხორციელებაში?

sobes.tech AI

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

Go-ში რუკა (map) განხორციელებულია როგორც ჰეშ-ცხრილი, სადაც გასაღებები გარდაიქმნება ჰეშ-ღირებულებებად ჰეშ-ფუნქციის საშუალებით. რუკაში ჰეშირების პრინციპი შემდეგია:

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

ეს საშუალებას აძლევს ელემენტების სწრაფად მოძებნას, დამატებას და წაშლას გასაღებით, დაახლოებით O(1) ამორტიზირებული სირთულით.

Go-ში რუკის გამოყენების მაგალითი:

m := make(map[string]int)
m["apple"] = 5
value := m["apple"] // value == 5

ამ მაგალითში, "apple" სტრიქონი ჰეშდება და მნიშვნელობა 5 ინახება შესაბამის ბაკეტში.