import java.util.*;

    class A
    {
        private ArrayList <B> bList;
        private Random generator = new Random();

        A(List<B> initialList)
        {
            bList = new ArrayList<B> ();
            int listSize = initialList.size();
            bList.ensureCapacity(listSize);

            for (B b : initialList)
            {
                int bIndex = generator.nextInt(listSize);
                bList.add(bIndex , b);
            }
        }
    }

    class B
    {
    }


我最后遇到一个新错误,当我插入blist.add(bIndex , b);时,它是超出范围的错误

调试后,似乎确保capacity不起作用。

最佳答案

查看add方法的文档:


  IndexOutOfBoundsException-如果索引超出范围(索引 size())


将元素放入列表中会在列表中造成孔的位置没有意义。

ensureCapacity只是为这么多元素留出了空间。这并不意味着它们实际上在那里。

通过此更改,它应该可以工作:

int bIndex = generator.nextInt(bList.size()+1);

关于java - Java列表错误超出范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15445976/

10-12 03:12