我有一个简短的问题.
ArrayList<T> x = (1,2,3,5)
int index = 6
if (x.get(6) == null) {
return 0;
}
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 6, Size: 4
Run Code Online (Sandbox Code Playgroud)
我怎么能避免这个?我只想检查数组中是否有索引6的内容.如果有(null)/(没有)我想返回0.
Jon*_*eet 16
只需使用列表的大小(它不是数组):
if (x.size() <= index || x.get(index) == null) {
...
}
Run Code Online (Sandbox Code Playgroud)
或者,如果要检测具有非空值的有效索引,则使用:
if (index < x.size() && x.get(index) != null) {
...
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,如果表达式的第一部分检测到索引对列表无效,get则不会进行调用.
请注意,"没有元素6"(因为列表没有7个元素)和"有一个元素6,但它的值为空"之间存在逻辑差异 - 在这种情况下,它可能对您不重要,但你需要明白它是不同的.