首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当数组列表大小为139时,索引6上的IndexOutOfBoundsException

当数组列表大小为139时,索引6上的IndexOutOfBoundsException
EN

Stack Overflow用户
提问于 2012-09-06 21:54:19
回答 2查看 2.2K关注 0票数 1

我有一个叫做A. iIn的类,这个类我有一个字符串名,以及这个字符串的setter和getter。我还有一个正在初始化的列表,如下所示:

代码语言:javascript
复制
List<A>myList = ArrayList<A>(SomeOtherList);

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

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

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

代码语言:javascript
复制
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函数的行时,我得到流异常:

代码语言:javascript
复制
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是一个集合Nanes

EN

回答 2

Stack Overflow用户

发布于 2012-09-06 22:22:26

这是可行的:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2012-09-06 22:51:39

错误消息不言而喻:您正在尝试获取仅包含6个元素的数组中的6个元素。而且,由于数组索引从0开始,所以您可以请求的最大可能索引是5,而不会出现异常。

您的代码和描述:

代码语言:javascript
复制
String name = myList.get(6).getName(); // Exception

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

是不可能的,因为调用

代码语言:javascript
复制
myList.get(6).getName();

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12301696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档