索引越界错误为什么?

时间:2015-04-09 19:25:37

标签: java class object methods

以下代码中的行x.set(7,y)正在抛出IndexOutOfBoundsException,我无法弄清楚原因。你能帮忙吗?

LinkedList<myClass> x = new LinkedList<myClass>();
x = MyArrayList.get(7);
Iterator<myClass> itr = x.iterator();
myClass y = new myClass();
while (itr.hasNext()) {
    y = itr.next();
    if (z.methodCallToGetStr().equals(y.methodCallToGetStr()))//z is a myClass object
    {
        y.incCount();
        x.set(7, y);
        break;

2 个答案:

答案 0 :(得分:0)

假设MyArrayList.get(7)创建了7个元素,这些元素的编号从0到6.第7个元素就在列表的末尾。

答案 1 :(得分:0)

x可以在null初始化,同样可以应用于y,这有助于您使用更少的内存。 无论如何使用x = MyArrayList.get(7)你正在将它的引用从新列表更改为MyArrayList中索引为7的列表(我假设这是一个ArrayList&gt;)所以使用x.set(7,y)你设置的是列表中索引为7的元素,数组列表中的索引为7。 但我不认为你可以认为x足够长,所以最好改变if的条件

 if (z.methodCallToGetStr().equals(y.methodCallToGetStr()) && x.size() > 7)

我想你想把元素等于z移动到MyArrayList [7] [7],但是如果arraylist和子链表不够长,你应该填充它们以使它们足够长。