Java String intern on null - PullRequest
       51

Java String intern on null

0 голосов
/ 28 января 2020

У меня есть ResultSet со списком бирж и стран, в которых они находятся. Тем не менее, в моей базе данных не у каждого Cxchange есть country_id, поэтому при создании объектов Exchange их набор имеет нулевые значения country_id и country_title. Из-за оптимизации памяти я планировал интернировать все дублирующиеся строки (страны, валюты и т. Д. c.), Но заметил, что получаю исключение NullPointerException, что логично. Есть ли обходной путь, как избежать дублирования строк с помощью intern, а также не получить NPE? Спасибо.

Ответы [ 2 ]

1 голос
/ 28 января 2020

Некоторые варианты:

Учитывая, что существует менее 200 стран и меньше, чем так много бирж (в мире всего 60 крупных бирж), было бы тривиально предоставить недостающие данные вашим биржам.

Укажите значение по умолчанию программно, либо в java, либо с помощью вашего запроса, например, присвойте 0 для country_id и "" для country_title, когда они равны null в базе данных.

Не беспокойтесь об интернировании - с таким небольшим количеством строк такая микрооптимизация не даст ощутимого эффекта.

0 голосов
/ 05 февраля 2020

Спасибо, ребята, в приложении используется гораздо больше строк, страны и биржи были только примером. Всего существует около 500 тыс. Строк, из которых 50 тыс. Уникальны, т. Е. Около 30 Мб потрачены впустую. Ничего страшного в этом нет.

После некоторых исследований я не буду интернировать строки, учитывая, что приложение должно работать на хорошо оборудованных ПК:)

...