我试过
cache = new Vector<CacheBlock>(1024);
...
cache.add(10, blk); // gives index out of bounds
那么将(插入指定的索引)插入空列表是不可能的?或者我如何填充所有元素,如果Vector,null或其他,所以我可以完成这个?
答案 0 :(得分:4)
在插入元素之前,您可以使用setSize()确保缓存足够大:
的setSize
public void setSize(int newSize)
设置此向量的大小。如果新尺寸大于当前尺寸, 新的null项添加到向量的末尾。如果 新大小小于当前大小,索引处的所有组件 newSize和更高版本被丢弃。
cache = new Vector<CacheBlock>(1024);
cache.setSize(11);
cache.add(10, blk);
答案 1 :(得分:2)
矢量是连续的。它们的每个索引必须包含从0到size-1的元素。没有任何差距。因此,您无法在向量的当前边界之外的索引处插入,因为这会留下 hole 。
因此,如果要在索引10处插入,则必须首先确保列表中至少填充了10个项目。您可以使用setSize执行此操作(强调我的):
设置此向量的大小。如果新大小大于当前大小,则将新的空项添加到结尾 向量强>