Проще говоря,
HashMap и Hashset корректируют свои внутренние компоненты по мере добавления новых, TreeMap обычно не корректирует свои узлы при добавлении новых.Так же, как ArrayList и LinkedList: первый настраивается для изменения размера, а второй - нет.Вот почему установка начального размера TreeMap примерно так же бессмысленна, как попытка установить начальный размер LinkedList.
Если вы видите, что hashmap и arraylist имеют произвольный доступ, имеет смысл также определить начальную емкость икоэффициент загрузки, но древовидная карта / связанный список должен выполнять последовательный поиск для доступа к любому значению, поэтому даже если вы предоставите начальную емкость, это не будет иметь смысла, так как эти коллекции работают.
stringbuilder и stringbuffer являются изменяемым типом строкиманипулирование и для этого вам нужно иметь произвольный доступ к любым символам строки, так что очевидно, что эти два должны быть поддержаны структурой данных типа массива / массива, и, как я сказал выше, нам нужно предоставить начальную емкость для буфера для хранения символа строкиа также javadocs говорит
"Пока длина символьной последовательности, содержащейся в строковом буфере, не превышает емкости, нет необходимости выделять новый массив внутреннего буфера. Если интерфейсПереполнение буфера в буфере, оно автоматически увеличивается. "