Я всегда считал это проблематичным, по сути, гарантированным нулевым указателем в большинстве случаев.Размер 2-мерного ArrayList в Java
Скажем, у нас есть двумерный ArrayList, например, так:
ArrayList<ArrayList<Integer>> outer;
Теперь я хочу, чтобы получить размеры внутренних массивов (мы предполагаем, что все они должны быть одинакового размера).
Я часто нахожу, что я делаю это:
int width = outer.size();
int length = outer.get(0).size();
, но это по сути небезопасно и просто ужасно. Что это лучший способ сделать это?
Лучшей идеей было бы перебрать все элементы массива во внешнем массиве, найти размер каждого внутреннего массива, убедиться, что размеры имеют одинаковое значение, а затем вернуть это значение, но это немного интенсивно ,
Что-то вроде этого:
private int getSizeOfInner(){
int size = null;
for(ArrayList<Integer> a: outer){
if(size == null){
size = a.size();
}
else{
if(a.size() != size){
throw new Exception("Inconsistent inner array sizes");
}
}
}
return size;
}
это кажется довольно много избыточна для такого рода проблемы ...
Для каких проблем? Почему вы создаете «Список» (-ов) «Список» (ов) в первую очередь? –
подумайте об этом как о Integer [] [], но с переменными размерами. –
Если предположение состоит в том, что внутренние списки имеют одинаковый размер и тип, тогда вы должны обеспечить это, сделав его типом массива, а не списком массивов, который должен иметь переменную длину. – scrappedcola