Junior — Middle
განმარტეთ, რა ნიშნავს გასაღებების შეჯახება HashMap მონაცემთა სტრუქტურაში და როგორ უვლის იგი ამას.
sobes.tech AI
პასუხი AI-სგან
HashMap-ში გასაღებების შეჯახება (hash collision) ხდება, როდესაც ორი სხვადასხვა გასაღები ჰეშფუნქციის გამოთვლისას ერთსა და იმავე ინდექსს იძლევა შენახვისთვის მასივში.
როგორ მართავს ამას HashMap:
- Java-ში HashMap იყენებს ჯაჭვებს (ლინკირებულ სიებს ან ბალანსირებულ ხეებს) იმისთვის, რომ შეინახოს რამდენიმე ელემენტი, რომლებიც ერთსა და იმავე ბაკეტში ხვდება.
- ახალი ელემენტის დამატებისას, რომლის ჰეშიც ემთხვევა უკვე არსებულს, ახალი ელემენტი ემატება ამ ბაკეტის ჯაჭვში.
- გასაღების ძიებისას, HashMap გადის ჯაჭვში არსებულ ელემენტებს და შედარებს გასაღებს მეთოდით equals(), რათა იპოვოს სწორი.
Java 8-დან მოყოლებული, თუ ჯაჭვი ძალიან გრძელია, ის გარდაიქმნება ბალანსირებულ ხეად (TreeNode), რაც აუმჯობესებს ძიების სიჩქარეს O(n)-დან O(log n)-მდე.