Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初始化java中的嵌套对象_Java_Android_Arraylist - Fatal编程技术网

初始化java中的嵌套对象

初始化java中的嵌套对象,java,android,arraylist,Java,Android,Arraylist,如果我初始化包含LatLng对象的ArrayList的ArrayList,LatLng的ArrayList是否设置为null或空?我问这个问题的原因是,当我检查第一个ArrayList是否为null时,我得到一个IndexOutofBoundsException(size=0,index=0)。这是否意味着在我第一次初始化对象时,所有对象都已设置为空且不为空?所以我不必每次都初始化一个新的LatLng对象,也不必初始化每个嵌套的ArrayList 我的初始化对象: public ArrayLis

如果我初始化包含LatLng对象的ArrayList的ArrayList,LatLng的ArrayList是否设置为null或空?我问这个问题的原因是,当我检查第一个ArrayList是否为null时,我得到一个IndexOutofBoundsException(size=0,index=0)。这是否意味着在我第一次初始化对象时,所有对象都已设置为空且不为空?所以我不必每次都初始化一个新的LatLng对象,也不必初始化每个嵌套的ArrayList

我的初始化对象:

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

之所以出现数组越界错误,是因为您没有在该索引中存储任何内容,主要是因为由于您没有在ArrayList中插入任何内容,所以大小为0。因此,在执行
get
调用之前,请检查ArrayList的大小,以防止出现IndexOutOfBoundException。因此,请检查
badSpots.size()是否为0
或a
!在执行
坏点之前,请执行badSports.isEmpty()
。获取(0)


因此,您仍然必须初始化存储的对象。不,LatLng对象将不会初始化。泛型仅确保类型LatLng对象存储在ArrayList中。

初始化只有一级深度。在您的示例中,您创建了一个新的ArrayList,您可以在其中愉快地填充LatLng对象的ArrayList。注意:你只创建了一个空列表;没有别的了。@Jägermeister那么如果我的坏点不是空的,就说在索引0处有一个arraylist,但在索引1处没有,那么索引1处的arraylist是空的还是空的?只需阅读集合的javadoc;答案是:视情况而定。如果你只叫了一次“添加”;那么大小是1;并且只能访问索引0。如果你叫“添加”两次。。。那么大小是2;在索引1处。。。你得到了你在那里“添加”的内容。因此,如果我的坏点不是空的,假设索引0处有一个arraylist,但索引1处没有,那么索引1处的arraylist是空的还是空的?如果坏点的大小为1,
badpots.get(1)
将抛出异常,因为该索引不存在。如果您谈论的是ArrayList类本身的实现,那么它可能为null,但您不必担心这一点
if(badSpots.get(badArrayNum)!=null){
                        badSpots.get(badArrayNum).add(badArrayNum,new LatLng(newLat,newLon));
                    }