我有一个名为A.的类。在这个类中,我有一个String名称和一个setter和getter for this String。 我还有一个正在初始化的List,如下所示:
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
答案 0 :(得分: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); }
}
}
尝试将此工作示例与您的数据一起使用。
答案 1 :(得分: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在两种情况下必须不同。