开发者社区> 问答> 正文

java中使用ArrayList问题

想取出两个元素进行比较,但是提示超出索引范围
screenshot
screenshot
为什么会这样?

展开
收起
蛮大人123 2016-03-06 16:05:28 2336 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    你把 ArrayList 的构造函数的参数去掉,这样:

    `ArrayList<Integer> eachNum = new ArrayList<Integer>();
    ArrayList<Integer> eachNum2 = new ArrayList<Integer>();`

    然后就不会有异常了。为什么呢?
    因为在 get(int) 函数里面,首先会执行 rangeCheck(int) 方法,而 rangeCheck(int) 方法是这样的:

      private void rangeCheck(int index) {
            if (index >= size)
                throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
        }

    在你的代码里面,index 与 size 相等了,所以会有异常。如果在构造函数中不给 size 传参,那么每次在 add 的时候会自动判断 size 够不够用,如果不够则会新开辟一段更大的空间然后内容复制过去。
    所以,你只需要使用无参构造函数就可以了。如果有帮助请采纳,谢谢!

    2019-07-17 18:54:48
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载