我面临一个非常简单的问题:
List<String> myList = new Vector<String>(10);
myList.add(5,"HELLO");
给了我ArrayOutOfBoundException : 5>0
有没有办法指定Vector的大小并按随机顺序填充列表?
答案 0 :(得分:4)
您没有指定尺寸,而是指定Vector
的容量。
你可以做:
List<String> myList = new Vector<String>();
for(int i = 0;i < 10; i++)
myList.add(null);
myList.set(5, "HELLO");
应该做的是忘记Vector
课程,因为它已经过时了10多年。
如果您只需要固定大小和随机访问,则可以使用数组
String[] myArr = new String[10];
如果您需要Collection
,可以使用
List<String> myList = Arrays.asList(myArr);
最后,如果你想在其中添加更多元素(Arrays.asList()
返回固定大小的列表),你可以使用
List<String> myList = new ArrayList<>(Arrays.asList(myArr));
答案 1 :(得分:1)
add()
方法的文档明确指出:
ArrayIndexOutOfBoundsException - 如果索引超出范围(索引&lt; 0 || index&gt; size())
由于此刻的大小为0,因此行为符合预期。
Vector
类的构造函数指定初始容量,而不是集合的大小。
在查看评论中的内容后,我删除了我的建议。在这种情况下坚持使用数组会更好。