Есть ли «правильный» способ хранить строку и целое число в одном массиве в Java? - PullRequest
0 голосов
/ 19 февраля 2019

Я думаю, что хранение строки и целого числа в одном и том же массиве в Java было бы более эффективным в некоторых случаях, но я знаю, что Java строго типизирована.

Есть ли способ сделать это ?,Если нет, что я могу сделать?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Определение «более эффективный» обычно означает меньший объем памяти или меньшую нагрузку на процессор.Это диаметрально противоположные цели.Задача заключается в их балансировке.

Вы можете использовать тип Object[], как указано выше, но для этого потребуется определить тип и затем привести каждый элемент к типу String или Int перед использованием.

Упаковка, преобразование в тип Object и распаковка, преобразование в исходный тип - относительно дорогие операции в Java.

Возможные решения, если они должны храниться с использованиемтот же индекс массива:

  • Если вам не требуется выполнять дополнительную математическую обработку для элементов int, используйте метод .toString(), чтобы преобразовать его в String и сохранитьэто в массиве String с.

  • Если число целочисленных элементов будет намного меньше, чем String с, используйте метод .toString(), чтобы преобразовать его в String и сохранить его в массивеString s.Затем выполните синтаксический анализ int s, используя Integer.parseInt(). (parseInt() считается медленной операцией)

  • Если память не имеет значения, сделайте два отдельных массива одинаковымиразмер, один типа String и другой типа int.Выберите один, чтобы быть основным (наиболее населенным).Используйте значение флага ("" для String и Integer.MIN_VALUE для int), чтобы указать, что результатом является другой тип, и следует использовать значение, хранящееся в другом массиве.Это сохраняет общий индекс за счет увеличения используемой памяти.

Я бы предложил переписать код, чтобы использовать два отдельных массива, если это возможно.

0 голосов
/ 19 февраля 2019

Вы можете использовать Object[] для этого.Но, пожалуйста, не надо.Если вы чувствуете, что вам нужно смешивать разные типы в одном массиве, возможно, пришло время пересмотреть свой дизайн (вот идея: преобразуйте String s в Integer s или даже int s перед их сохранением).Просто не правильно хранить такие разные типы данных в одном массиве.

...