1

我有一个名为 A 的类。在这个类中,我有一个 String 名称以及这个 String 的 setter 和 getter。我还有一个正在初始化的列表,如下所示:

List<A>myList = ArrayList<A>(SomeOtherList);

现在,当我检查 ArrayList 的大小时,我可以看到列表的大小是 139,但是当我尝试获取索引 6 中的值时,我得到了

java.lang.IndexOutOfBoundsException: Index: 6, Size: 6.

但是,如果我尝试在 for 循环中打印 0 - 138 的值,我将不会得到异常,

String name = myList.get(6).getName(); // Exception

for(int i = 0 ; i < 139 ; i++){
    System.out.println(myList.get(i).getName());
}//will work

有没有人遇到过这个问题???

for 循环将所有 139 个名称打印到控制台,但是当代码到达 get 函数的行时,我得到了流异常:

Caused by: java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
    at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at com.icap.dashboard.DashboardPage.getSelectionFromCookie(DashboardPage.java:337)
at com.icap.dashboard.DashboardPage.addCCYPanelAndChannels(DashboardPage.java:149)
at com.icap.dashboard.DashboardPage.<init>(DashboardPage.java:107)
... 52 more

我使用 Maven 编译我的项目,ArrayList 的初始化是使用 Collection Nanes

4

2 回答 2

1

这有效:

import java.util.*;

public class StackOverflow {

    public static void main(String[] args) {
        List<A> SomeOtherList = new ArrayList<A>();
        for(int i = 0; i < 139; i++) {
            SomeOtherList.add(new A().setName(String.valueOf(i)));
        }
        List<A> myList = new ArrayList<A>(SomeOtherList);

        System.out.println("random access: " + myList.get(6).getName());

        for(int i = 0 ; i < myList.size() ; i++){
            System.out.println(myList.get(i).getName());
        }

    }

    public static class A {
        String name;

        public A setName(String theName) { this.name = theName; return(this); }
        public String getName() { return(this.name); }
    }
}

尝试将这个工作示例与您的数据一起使用。

于 2012-09-06T14:22:26.260 回答
0

错误消息不言自明:您正在尝试获取仅包含 6 个元素的数组的第 6 个元素。而且,由于数组索引从 0 开始,您可以要求的最高可能索引是 5。

您的代码和描述:

String name = myList.get(6).getName(); // Exception

for(int i = 0 ; i < 139 ; i++){
    System.out.println(myList.get(i).getName());
}//will work

根本不可能,因为调用

myList.get(6).getName();

将在 for 循环内进行。对于您描述的可能的场景, myList 在两种情况下必须不同。

于 2012-09-06T14:51:39.163 回答