Как проверить, существует ли элемент в массиве в Java
-
05-07-2019 - |
Вопрос
Если у меня есть int
массив структурирован следующим образом:
private int[][] map = new int[400][400];
И я пытаюсь восстановить
map[100][200]
И этот элемент не инициализирован, получу ли я ошибку компилятора/время выполнения или он вернет ноль?И есть ли какая-либо функция для проверки, существует ли/установлен ли данный элемент/индекс?
Решение
Поскольку ваше объявление массива имеет примитивный тип, вы не получите никаких ошибок компилятора или времени выполнения - будет возвращено значение по умолчанию 0.
Если бы ваш массив был массивом объектов, то массив содержал бы null
для любого элемента, который не был специально назначен.
Другие советы
Я не вернусь null
, потому что int
- это примитивный тип. Он вернет значение по умолчанию 0
, которое равно <=>.
Нет способа узнать, был ли установлен какой-либо элемент, если не считать отдельный логический массив.
В Java только ссылочные переменные инициализируются нулем. Примитивы гарантированно возвращают соответствующие значения по умолчанию а>. Для целых это значение равно 0.
Нет.
Элементы вашего массива достаточно велики, чтобы вместить их. int
с, в данном случае.Негде хранить информацию о том, «существует» ли элемент.Его выделили, значит, он существует.В Java недавно выделенный int
массивы будут инициализированы нулями для всех элементов.
Вы можете использовать checkstyle , pmd и findbugs в вашем источнике (findbugs на бинарный), и они скажут вам такие вещи. Р>
К сожалению, не похоже, что они улавливают эту конкретную проблему (что имеет смысл, что для массива гарантируется, что каждый член имеет значение 0, ноль или ложь). Р>
Использование этих инструментов может перехватить элементы экземпляра и класса (которые не являются массивами), которые используются до того, как им будет присвоено значение (аналогичная проблема).
Немного о мертвой теме, но я нашел ее случайно, поэтому я собираюсь поместить свой кусок мудрости (или что-то еще: P). Вы можете использовать Arrays.Fill для заполнения массива, когда он создан с недопустимым значением, таким как -1. Затем вы можете легко выполнить if x & Lt; 0, чтобы проверить, инициализировали ли вы эту конкретную позицию массива или нет. Просто идея ...