2014-01-28 2 views
-4

Что было бы лучшим способом сохранить 1000000 номера телефонов в памяти с наименьшим размером памяти.Лучший способ хранить 1000000 номеров в памяти

Я думал просто использовать массив, но я уверен, что должен быть лучший способ

+0

Не нужно беспокоиться о том, что память хранит элемент '1000000' в' Java'. Просто используйте 'String'' Array' или 'List'. –

+0

Для чего вы используете массив? Каждая цифра или массив телефонных номеров. Кроме того, '1m' не так уж много. –

+0

Нет решения с меньшим размером, чем массив. Возможно, если вы воспользуетесь форматом номера телефона, вы можете попробовать использовать какое-то дерево префикса, но вам нужно будет оценить, стоит ли потеря памяти из-за дополнительных ссылок. – rhobincu

ответ

1

Массив имеет наименьший объем памяти.

+2

... но это также наименее полезно. – Makoto

+0

Это зависит от того, что вы хотите использовать данные для ... –

+3

«полезно» в каком смысле? Уверен, что он менее гибкий для управления данными, но имеет самые низкие издержки. – maxdev

3

Размер памяти не влияет на то, как вы храните коллекцию (!) Цифр, но больше того, как вы фактически храните один номер телефона (в виде строки или целого числа).

Если вы действительно хотите уменьшить объем памяти, попробуйте сохранить каждый номер телефона, используя long.

Например, если вы сохраняете телефонные номера в ArrayList, вы получите максимальные накладные расходы, например, 30%, что не так уж много. Если вы сохраните каждый номер телефона в виде строки, вы получите накладные расходы, допустим, 900% по сравнению с хранением данных с использованием целых чисел.

+0

«int» не будет содержать, например, десятизначный номер телефона США №. – GriffeyDog

+0

хорошо, 'длинный' тогда. Но все же это значительно сократит память: 'long' - это' 8' байт, но строка '10 * 2 = 20 байтов'. –

+0

Согласен, 'long' является более компактным, сохраняя их в' String'. – GriffeyDog

-1

сделать алгоритм для номера телефона. довольно сложный. если вы можете это сделать, это сэкономит массу памяти.

+1

Утверждение, что сжатие номера телефона «довольно сложно» не помогает. Кроме того, это не очень сложно, если вы знаете, какие числовые форматы вам понадобятся - тогда это будет только немного смещение. – maxdev

Смежные вопросы