Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java ArrayList中向后移动数据_Java_Arraylist - Fatal编程技术网

如何在java ArrayList中向后移动数据

如何在java ArrayList中向后移动数据,java,arraylist,Java,Arraylist,我正在尝试这样做,以便我可以将数据写入ArrayList以跟踪随机整数,然后我将有一个上一个按钮返回到最后一个结果(这只是测试代码,这不是项目的完整代码)。我在尝试将int数组化并将其减去1并重新打印数据时出错。知道为什么会发生这种情况,或者知道如何以其他方式完成任务 int lenth = 10; ArrayList<Integer> list = new ArrayList<Integer>(); int arraySize = list.size(); Random

我正在尝试这样做,以便我可以将数据写入ArrayList以跟踪随机整数,然后我将有一个上一个按钮返回到最后一个结果(这只是测试代码,这不是项目的完整代码)。我在尝试将int数组化并将其减去1并重新打印数据时出错。知道为什么会发生这种情况,或者知道如何以其他方式完成任务

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();