Array индексы ограничены Integer.MAX_VALUE, а не физическим размером массива.
Поэтому максимальный размер массива связан с размером массива.
byte = 1 byte => max 2 Gb data
char = 2 byte => max 4 Gb data
int = 4 byte => max 8 Gb data
long = 8 byte => max 16 Gb data
Словари другая история, потому что они часто используют такие методы, как ведра или внутренней структуры данных в виде дерева. Поэтому эти «ограничения» обычно не применяются, или вам потребуется еще больше данных, чтобы достичь предела.
Short: Integer.MAX_VALUE на самом деле не является пределом, потому что вам нужно много памяти, чтобы достичь предела. Если вы когда-нибудь достичь этого предела вы можете думать об улучшении вашего алгоритма и/или данных макета :)
Какие именно ограничения вы говорите? –
Количество элементов в коллекции, StringBuilder/StringBuffer и т. Д. – Joset
Невозможно увеличить количество элементов в одной коллекции за пределами своих индексов max_value (кроме перезаписи класса коллекции). На практике, любые пределы реальной памяти, безусловно, превышены до max_value ... –