Вы можете использовать TLongArrayList, который использует long[]
внизу. Он поддерживает sort()
, поэтому min и max будут первым и последним значением.
Или вы можете использовать long[]
с длиной и сделать это самостоятельно. ;)
Это будет использовать примерно на 64 байта больше, чем сами исходные значения. Вы можете стать более компактными, если сделаете некоторые предположения о диапазоне длинных значений. например если они на самом деле ограничены 48-разрядным.
Вы можете рассмотреть возможность использования LongBuffer. Если он отображен в память, он избегает использования кучи или прямой памяти, но вам бы пришлось реализовать процедуру сортировки самостоятельно.
Если они сгруппированы, вы можете представлять данные в виде набора диапазонов. Диапазоны могут быть чистыми A - B или BitSet с начальным значением. Последний работает хорошо для телефонных номеров. ;)