如何用ArrayList获取.get函数,该索引会变空吗



我正在编写一个具有ImageViewArraylist的程序。我使用.get()从一个arraylist中取出一个骰子imageview,并将其添加到另一个将显示所选所有骰子的Arraylist中。我很困惑,因为使用.get()会将其从原始Arraylist中删除吗?

ArrayList<ImageView> rolledhand=new ArrayList<>(5);
Random rand = new Random();
for(int i=0;i<5;i++)
{
int randomNum = rand.nextInt(6);
rolledhand.add(diceingame.get(randomNum));
}
VBox diceRolled1=new VBox(rolledhand.get(0));
VBox diceRolled2=new VBox(rolledhand.get(0));

在我上面的代码中,diceingameArrayList已经添加了6个图像视图骰子。我随机选择一个,并将其添加到我的rolledhand数组列表中5次。当我尝试输出rolledhand的相同索引时,只有一个出现在我的场景中,而不是两个相同的索引。


我并没有试图删除它。我只是问,因为出于某种原因,如果两个骰子在diceingame中处于同一位置,我的程序将不会显示它们。

ArrayList#get()不会删除任何内容。它只是gets元素:

公共E获取(int索引(

返回此列表中指定位置的元素。

ArrayList#get((

如果要getremove某个位置的元素,请使用ArrayList#remove()

公共E移除(int索引(

删除此列表中指定位置的元素。将任何后续元素向左移动(从其索引中减去一(。

ArrayList#remove((

或者,如果要弹出元素(获取并删除第一个/最后一个元素(,请使用QueueStack

[编辑]


关于您的问题,根据Node文档(ImageView继承自该文档(,视图上只显示一个元素:

节点在场景图中的任何位置最多可能出现一次。具体而言,一个节点在以下所有节点中的出现次数不得超过一次:作为场景的根节点、父节点的子节点ObservableList,或作为节点的片段。

如果程序将子节点添加到父节点(包括"组"、"区域"等(,并且该节点已经是另一个父节点的子节点或场景的根节点,则该节点将自动(且无提示(从其前一个父对象中删除。

相关内容

最新更新