java - 索引越界异常

标签 java exception

嗨 这段代码将返回indexoutofboundsException,我真的不知道为什么? 我想从 pointlist 中删除那些与 list 中的对象相同的对象。

    public void listOfExternalPoints(List<Point> list) {
    System.out.println(list.size());
    System.out.println(pointList.size());
    int n = pointList.size();
    for (int i = pointList.size() - 1; i >= 0; i--) {
        for (int j = 0; j < list.size(); j++) {
            if (pointList.get(i)==(list.get(j))) {
                pointList.remove(i);
                n--;
            }
        }
    }

}

println 的输出也将是:

54
62

还有异常(exception):

Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 60, Size: 60
    at java.util.ArrayList.RangeCheck(ArrayList.java:547)
    at java.util.ArrayList.get(ArrayList.java:322)
    at ConvexHull.BlindVersion.listOfExternalPoints(BlindVersion.java:83)

谢谢。

最佳答案

嘿,您从列表中删除了一些元素。因此列表比循环开始时要小。

我建议你使用:

pointList.removeAll(list)

或者迭代器。

关于java - 索引越界异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4269153/

相关文章:

java - iText 数字签名损坏 PDF/A 2b

java - 如何用java导出pdf格式的列表

java - Uri 文件大小始终为 0

c# - 带有自旋锁的自定义锁

java - 如何正确捕获、包装和重新抛出 Hibernate 异常?

java - 无法向 JButton 添加操作监听器

java - JOptionPane 当我点击 "Ok"时如何阻止它关闭

C# 甲骨文 : catch all exceptions relative to connectivity?

java - 我怎样才能得到一个 RejectedExecutionException

exception - 简单的 IPython 示例在 sys.exit() 上引发异常