Я пытаюсь построить структуру данных на Java, где я буду вставлять около 200 000 ключей строк, каждый со значением «в среднем» из 1000 целых чисел Map<String, Arraylist<Integer>>
. В итоге карта будет иметь около 200 миллионов значений.Что не так с Map <Object, Collection <Object>>?
Проблема заключается в том, что при вставке я должен сначала проверить, существует ли ключ на карте, если true, получить все значения, хранящиеся в коллекции temp, затем добавить новое целое в коллекцию и вернуть их обратно на карту , или создать новую коллекцию с новым целым числом.
Это так медленно, когда я добираюсь до точки, где коллекция содержит около 50000 целых чисел. Обычно я получаю java из-за ошибки в куче.
Есть ли способ избавиться от процесса получения? где я проверяю только существование ключа, а затем сразу добавляю значение к существующей коллекции, что-то вроде posh в стек, особенно в том, что карта находится в памяти, или это то, что делает разницу между Java и C++, где в C++ Я могу извлечь выгоду из использования указателей?
Сохраняя тот факт, что я не предпочитаю увеличивать размер карты, используя такие вещи, как multimaps, поскольку структура кажется почти простой.
Большое спасибо заранее.
Реализация 'Multimap' не будет потреблять заметно больше памяти, чем' Map> '. –
Почему бы вам не показать нам какой-нибудь код? – NPE
На самом деле вам нужно только сделать пометку, если ключ не найден на карте. Добавьте соответствующий SSCCE. – Perception