При каком наполнении LinkedList в HashMap LinkedList преобразуется в TreeMap

«При каком наполнении LinkedList в HashMap LinkedList преобразуется в TreeMap» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java 8 при достижении размера 8 элементов в LinkedList внутри HashMap происходит преобразование в TreeNode (красно-черное дерево) для улучшения производительности с O(n) до O(log n). Обратное преобразование (из TreeNode обратно в LinkedList) происходит при уменьшении размера до 6 элементов (гистерезис для избежания частых преобразований).

Пример кода (из исходников HashMap):

static final int TREEIFY_THRESHOLD = 8;
static final int UNTREEIFY_THRESHOLD = 6;