Как обход работает с хэшсетами и хэш-картами? [дубликат]JAVA

Программисты JAVA общаются здесь
Anonymous
Как обход работает с хэшсетами и хэш-картами? [дубликат]

Сообщение Anonymous »

Я понимаю, что мы можем использовать цикл for для перебора элементов хэш-набора. например

Код: Выделить всё

Set set = new HashSet();

for(Object object : set) {
String element = (String) object;
}
Я не могу понять, как это работает внутри?
Это имеет смысл в случае arrayList, поскольку элементы сохраняются один за другим. Таким образом, итератор имеет ссылку на первое значение, а затем мы можем использовать hasNext() и next() для перебора всех элементов. А вот в случае с хешсетами и хеш-картами как это работает?
Что ответил чатgpt/gemini:

Когда мы создаем хэш-набор/хэш-карту, назначаются сегменты, которые сопоставляются с хеш-кодами. Допустим, также существуют методы столкновения. Когда мы выполняем итерацию, итератор просматривает все сегменты, извлекая элементы, а затем выполняет проверку на равенство.
Он сравнивает полученный элемент с исходными элементами, которые вы добавили, с помощью методаquals().
< /p>

В этом есть смысл, но я не понял эту часть проверки равенства. Почему это необходимо? Я предполагаю, что эти назначенные сегменты являются эксклюзивными для хэш-набора, так почему бы не распечатать все элементы в блоке?

Подробнее здесь: https://stackoverflow.com/questions/785 ... d-hashmaps

Вернуться в «JAVA»