Java - (LinkedList.get(var)== null)不起作用

时间:2016-05-06 05:29:53

标签: java for-loop linked-list null

当我试图从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

1 个答案:

答案 0 :(得分:3)

问题在于这一部分:

sum = i + 1;
if(list.get(sum) == null){

i保证是for语句中循环条件的有效索引, 但i + 1不是。 当i等于list.size() - 1(最后一个元素的索引)时, 你会得到IndexOutOfBoundsException, 因为这是在列表末尾之外访问的。

顺便说一下,请记住,get方法对链表无效。 您应该重构代码以使用for-each循环,或者将列表实现更改为具有有效随机访问权限的内容,例如ArrayList