2016-03-15 4 views
0

Если я инициализирую ArrayList из массивов ArrayLists, содержащих объекты LatLng, являются ли ArrayLists из LatLngs равными нулю или пустыми? Причина, о которой я прошу, заключается в том, что когда я проверяю, чтобы первый ArrayList был нулевым, я получаю IndexOutofBoundsException (size = 0, index = 0). Означает ли это, что все объекты были установлены как пустые, а не null, когда я впервые инициализировал объект? Поэтому мне не нужно каждый раз инициализировать новый объект LatLng, и я не должен инициализировать каждый вложенный массив ArrayList?Инициализация вложенных объектов java

Мой инициализирован объект:

public ArrayList<ArrayList<LatLng>> badSpots = new ArrayList<>(); 
int badArrayNum = 0; 

Где я получаю исключение:

if(badSpots.get(badArrayNum)!=null){ 
         badSpots.get(badArrayNum).add(badArrayNum,new LatLng(newLat,newLon)); 
        } 
+1

Инициализация - только на один уровень. В вашем примере вы создаете новый ArrayList, в котором вы можете с удовольствием использовать ArrayLists объектов LatLng. Разум: вы создали только ** пустой список **; ничего больше. – GhostCat

+0

@ Jägermeister, так что если мои badSpots не пустые, скажите, что есть arraylist с индексом 0, но не в индексе 1, это arraylist по индексу 1 null или пустой? –

+0

Просто прочитайте javadoc для коллекций; как ответ: это зависит. Если вы вызвали «добавить» только один раз; затем размер равен 1; и доступен только индекс 0. Если вы дважды назовете «добавить» ... тогда размер равен 2; и в индексе 1 ... вы получили то, что вы «добавили» там. – GhostCat

ответ

0

Причина вы получите массив из пределов ошибки, потому что нету хранить что-либо по этому индексу, в основном потому, размер равен 0, поскольку вы не вставляли ничего в ArrayList. Поэтому перед вызовом get выполните проверку размера массива ArrayList, чтобы предотвратить исключение IndexOutOfBoundException. Поэтому проверьте, badSpots.size()>0 или !badSports.isEmpty(), прежде чем вы сделаете badSpots.get(0).

Итак, вы все еще должны инициализировать объекты, которые вы храните. И нет, ваш объект LatLng не будет инициализирован. Общий тип гарантирует, что объект Type LatLng хранится в вашем ArrayList.

+0

, так что если мои badSpots не пустые, скажите, что есть arraylist по индексу 0, но не по индексу 1, это arraylist по индексу 1 null или пустой? –

+0

, если badSpots имеет размер 1, 'badSpots.get (1)' будет генерировать исключение, поскольку этот индекс не существует. Если вы говорите о реализации самого класса ArrayList, то это, вероятно, значение null, но вам не нужно беспокоиться об этом –

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