当我试图从LinkedList获取索引时,我收到错误,我在0位置插入1值,所以当我询问下一个位置是否为null然后打印一些东西。
int i;
int sum;
for(i=0; i<list.size();i++){
if(i == 0){
sum = i + 1;
if(list.get(sum) == null){
System.out.println("["+list.get(i) +"," + "Null" + "]" + " <-- Cabecera");
}
else{
System.out.println("["+list.get(i) +"," + sum + "]" + " <-- Cabecera");
}
}
else {
sum = i + 1;
if(list.get(sum) == null){
System.out.println("["+list.get(i) +"," + "Null" + "]");
}
else{
System.out.println("["+list.get(i) +"," + sum + "]");
}
}
但我一直这样 错误:线程“AWT-EventQueue-0”中的异常java.lang.IndexOutOfBoundsException:索引:1,大小:1
答案 0 :(得分:3)
问题在于这一部分:
sum = i + 1;
if(list.get(sum) == null){
i
保证是for
语句中循环条件的有效索引,
但i + 1
不是。
当i
等于list.size() - 1
(最后一个元素的索引)时,
你会得到IndexOutOfBoundsException
,
因为这是在列表末尾之外访问的。
顺便说一下,请记住,get
方法对链表无效。
您应该重构代码以使用for-each循环,或者将列表实现更改为具有有效随机访问权限的内容,例如ArrayList
。