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/