根据文档,您可以将对象插入列表中的任何位置:
该界面的用户可以精确控制每个元素在列表中的插入位置。
(来源:http://download.oracle.com/javase/6/docs/api/java/util/List.html http://download.oracle.com/javase/6/docs/api/java/util/List.html)
但以下程序失败并出现 IndexOutOfBoundsException:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<String> myList = new ArrayList<String>();
myList.add(0, "derp");
myList.add(2, "herp");
for (String s : myList) {
System.out.println("Le string: " + s);
}
}
}
它也无助于显式设置初始容量(这是有道理的,因为默认值为 10)。
为什么只要索引低于容量就不能在任何位置插入对象?大小总是等于插入元素的数量吗?
您可以在任意位置插入对象valid位置。仔细查看 Javadocadd(int, E) http://download.oracle.com/javase/6/docs/api/java/util/List.html#add%28int,%20E%29:
Throws:
IndexOutOfBoundsException - 如果索引超出范围(index < 0 || index > size())
换句话说,插入一个元素总是会使列表的大小增加 1。你可以在任意一端插入,也可以在中间插入......但你不能插入past结束。
The capacity of an ArrayList
实际上是一个实现细节 - 它控制何时需要用更大的数组替换支持数组以应对更多元素。这size列表的重要部分是这里的重要部分 - 容量为 100 但大小为 5 的列表仍然只是一个包含 5 个元素的列表,因此在位置 67 处插入这样的列表是没有意义的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)