如何在java ArrayList中向后移动数据
我正在尝试这样做,以便我可以将数据写入ArrayList以跟踪随机整数,然后我将有一个上一个按钮返回到最后一个结果(这只是测试代码,这不是项目的完整代码)。我在尝试将int数组化并将其减去1并重新打印数据时出错。知道为什么会发生这种情况,或者知道如何以其他方式完成任务如何在java ArrayList中向后移动数据,java,arraylist,Java,Arraylist,我正在尝试这样做,以便我可以将数据写入ArrayList以跟踪随机整数,然后我将有一个上一个按钮返回到最后一个结果(这只是测试代码,这不是项目的完整代码)。我在尝试将int数组化并将其减去1并重新打印数据时出错。知道为什么会发生这种情况,或者知道如何以其他方式完成任务 int lenth = 10; ArrayList<Integer> list = new ArrayList<Integer>(); int arraySize = list.size(); Random
int lenth = 10;
ArrayList<Integer> list = new ArrayList<Integer>();
int arraySize = list.size();
Random random = new Random();
int newRandom = random.nextInt(lenth);
list.add(newRandom);
newRandom = random.nextInt(lenth);
list.add(newRandom);
System.out.println(list.get(arraySize));
arraySize--;
System.out.println(list.get(arraySize));
当您将一个变量(例如int
)分配给另一个变量时,会将该值复制到新变量。对于对象,其工作原理稍有不同,因为这些变量将指向同一对象
int arraySize = list.size();
因此,上行将只将arraySize
设置为列表的当前大小,arraySize
不会随着列表大小的变化而变化。由于您在列表为空时执行此操作,因此它将是并保持为0
,您将尝试获取索引0
和0-1=-1
处的元素,这就是您的异常所在
您应该在插入所有元素后进行设置
请注意,Java中的索引从0开始,因此最后一个元素将已经位于
list.size()-1
,而不是list.size()
在列表中添加任何内容之前设置arraySize。arraySize的值将始终为0,因为您仅在开始时设置它。当您调用arraySize--时,arraySize现在是-1,当您调用list.get(arraySize)时,您将在请求索引-1时得到一个索引越界异常 您的目标似乎是将值放入集合中,然后将其出列。例如,LinkedList
更适合于它的push()
和pop()
方法
无论如何,您不应该通过外部变量跟踪
数组列表的大小。在ArrayList
中已经为您提供了这样的数据,因此您只需查询列表就可以知道它的大小。通过listArray,您的意思是ArrayList
?索引从0开始。所以,如果您有3个元素,那么最后一个元素将位于索引2
,而不是3
。
int arraySize = list.size();