我正在编写一个具有ImageView
的Arraylist
的程序。我使用.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));
在我上面的代码中,diceingame
ArrayList
已经添加了6个图像视图骰子。我随机选择一个,并将其添加到我的rolledhand
数组列表中5次。当我尝试输出rolledhand
的相同索引时,只有一个出现在我的场景中,而不是两个相同的索引。
我并没有试图删除它。我只是问,因为出于某种原因,如果两个骰子在diceingame
中处于同一位置,我的程序将不会显示它们。
ArrayList#get()
不会删除任何内容。它只是gets
元素:
公共E获取(int索引(
返回此列表中指定位置的元素。
ArrayList#get((
如果要get
和remove
某个位置的元素,请使用ArrayList#remove()
:
公共E移除(int索引(
删除此列表中指定位置的元素。将任何后续元素向左移动(从其索引中减去一(。
ArrayList#remove((
或者,如果要弹出元素(获取并删除第一个/最后一个元素(,请使用Queue
或Stack
。
[编辑]
关于您的问题,根据Node
文档(ImageView
继承自该文档(,视图上只显示一个元素:
节点在场景图中的任何位置最多可能出现一次。具体而言,一个节点在以下所有节点中的出现次数不得超过一次:作为场景的根节点、父节点的子节点ObservableList,或作为节点的片段。
如果程序将子节点添加到父节点(包括"组"、"区域"等(,并且该节点已经是另一个父节点的子节点或场景的根节点,则该节点将自动(且无提示(从其前一个父对象中删除。