Java 添加到空ArrayList的中间?
如果我创建一个大小为5的新arraylistJava 添加到空ArrayList的中间?,java,android,Java,Android,如果我创建一个大小为5的新arraylist Player P; ArrayList<Player> orderedPlayers = new ArrayList<Player>(5); 我得到了一个索引自动边界。。。如果我使用set而不是add,我也会得到indexoutofbounds orderedPlayers.set(2, P); 事实上,我向arraylist添加p的唯一方法是使用0索引 orderedPlayers.add
Player P;
ArrayList<Player> orderedPlayers = new ArrayList<Player>(5);
我得到了一个索引自动边界。。。如果我使用set而不是add,我也会得到indexoutofbounds
orderedPlayers.set(2, P);
事实上,我向arraylist添加p的唯一方法是使用0索引
orderedPlayers.add(0, P);
还有一些奇怪的原因,当我在eclipse中调试时,我看到元素被添加到OrderedPlayer的第4个索引中,而不是第0个。。。是ArrayList马车还是我完全错过了什么?如何添加到空ArrayList的中间?5是初始容量,而不是实际大小。您不能添加到空数组列表的中间。5是初始容量,而不是实际大小。无法添加到空数组列表的中间。在参数中使用数字创建数组时,此数字将用于设置初始容量。这样列表就不需要为
add()
的“每次”调用创建新数组。如果可以确定列表将包含100个元素,则可以使用newarraylist(100)
。这并不意味着100个元素存在或可以访问
每个ArrayList实例都有一个容量。容量是用于存储列表中元素的数组的大小。它始终至少与列表大小一样大。当元素添加到ArrayList时,其容量会自动增长。除了添加要素具有恒定的摊余时间成本这一事实之外,没有详细说明增长政策
应用程序可以在使用ensureCapacity操作添加大量元素之前增加ArrayList实例的容量。这可能会减少增量重新分配的数量
在参数中使用数字创建时,此数字将用于设置初始容量。这样列表就不需要为add()
的“每次”调用创建新数组。如果可以确定列表将包含100个元素,则可以使用newarraylist(100)
。这并不意味着100个元素存在或可以访问
每个ArrayList实例都有一个容量。容量是用于存储列表中元素的数组的大小。它始终至少与列表大小一样大。当元素添加到ArrayList时,其容量会自动增长。除了添加要素具有恒定的摊余时间成本这一事实之外,没有详细说明增长政策
应用程序可以在使用ensureCapacity操作添加大量元素之前增加ArrayList实例的容量。这可能会减少增量重新分配的数量
数组列表是动态结构。。。如果您希望能够在特定位置添加内容,则可能必须使用数组来代替。数组列表是动态结构。。。如果希望能够在特定位置添加内容,则可能必须使用数组。可以通过循环中的空对象初始化数组列表
或者即使大小是固定的。然后使用数组而不是列表。您可以通过循环中的空对象初始化数组列表
或者即使大小是固定的。然后使用数组而不是列表。您似乎有一种错误的印象,即当您编写
新的ArrayList(5)
时,您会得到类似于5元素数组的东西。你不是。您将得到一个空列表,该列表恰好由一个内部数组支持,该数组最初最多可容纳5个元素。但是,列表本身根本没有元素
列表是动态的,随着元素的添加和删除而增长和收缩。从0个元素开始。如果再添加5名玩家,列表将包含5个元素。如果您只使用普通的
add(T)
方法而不使用索引,那么最终将按照元素的添加顺序生成元素。您似乎有一种错误的印象,即当您编写新的ArrayList(5)
时,您会得到类似于5元素数组的东西。你不是。您将得到一个空列表,该列表恰好由一个内部数组支持,该数组最初最多可容纳5个元素。但是,列表本身根本没有元素
列表是动态的,随着元素的添加和删除而增长和收缩。从0个元素开始。如果再添加5名玩家,列表将包含5个元素。如果只使用普通的无索引的
add(T)
方法,那么最终将按照元素添加的顺序生成元素。通过构造一个具有初始容量的ArrayList(int initialCapacity),可以大致指示在Java增加其大小之前列表可以达到的大小
您没有像在阵列中那样分配插槽。ArrayList的大小取决于列表中元素的数量,您不能为大于其大小的索引插入或设置值。通过构造具有初始容量的ArrayList(int initialCapacity),您可以大致指示在Java增加其大小之前列表可以达到的大小
您没有像在阵列中那样分配插槽。ArrayList的大小取决于列表中元素的数量,您不能插入或设置大于其大小的索引值。以下是初始化OrderedPlayer可能需要执行的操作:
ArrayList<Player> orderedPlayers =
new ArrayList<Player>(Collections.nCopies( 5, null ));
ArrayList OrderedPlayer=
新的ArrayList(Collections.nCopies(5,null));
然后你有一个5个空元素的列表,在这里你可以插入它的中间。
这里可能是为了初始化有序的玩家你想做的事情:ArrayList<Player> orderedPlayers =
new ArrayList<Player>(Collections.nCopies( 5, null ));
ArrayList OrderedPlayer=
新的ArrayList(Collections.nCopies(5,null));
然后你有一个5个空元素的列表,这时你可以在中间插入。
这好像是想把列表做一个不做的事情。如果你真的想要数组,你应该使用arra