Всем привет, разбираюсь с HashMap, почитал несколько статей, глянул исходники... мало чего понял, но что то да понял ) В общем вот такой ответ не смог для себя найти: При добавлении новой пары ключ/значение, создаётся новый экземпляр класса Node, высчтывается хеш по ключу на основе которого определяется ячейка в массиве table (корзина), куда уже связным списком падают все объекты класса Node содержащего нашу пару ключ/значение которые мы добавляем с одинковым хешем. Если хеш другой, то другая ячейка (корзина). Но в примере был скриншот, где в таблице всего 16 ячеек. Я так понял это минимальный размер по умолчанию. Внимание вопрос, что будет если в table будет добавлено 17 элементов Node с разными хешами? Таблица пересоздастся и создастся более большая? Я знаю ответ есть в исходном коде класса, но я ещё не настолько хорош, чтоб полностью его разобрать. Потому прошу словами попроще рассказать. Мне единственное в глаза бросилось поле: static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 наверное это и есть тот самый раз минимальный размер table, и тогда есть вот такое ещё поле: static final int MAXIMUM_CAPACITY = 1 << 30; я правда не знаю что такое 1 << 30, предполагаю что эквивалент 30*30, но это не точно )