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

标签 java arraylist

我试图做到这一点,以便我可以将数据写入 ArrayList 来跟踪随机整数,然后我将有一个上一个按钮,该按钮将返回到最后一个结果(这只是测试该代码,这不是完整的代码对于该项目)我在尝试获取 int arraySize 并将其减去 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));

这也是我收到的错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at test.C_MainActivity.main(C_MainActivity.java:22)

最佳答案

当您分配一个primitive时(例如 int)到另一个变量,这会将值复制到新变量。对于对象,这有点不同,因为这些变量将指向同一个对象。

int arraySize = list.size();

所以上面的行只是将 arraySize 设置为列表的当前大小,arraySize 不会随着列表大小的变化而变化。由于您在列表为空时执行此操作,因此列表将保持为 0,并且您将尝试获取索引 00-1 = 处的元素-1,这是您的异常出现的地方。

您应该在插入所有元素后设置它。


请注意,Java 中的索引从 0 开始,因此最后一个元素已经位于 list.size() - 1,而不是 list.size()

关于java - 如何在java ArrayList中向后移动数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31055047/

相关文章:

java - 对NX3矩阵进行排序(最有效的方法)

java - 接收 CameraAccessException : CAMERA_ERROR (3) on CaptureSession. setRepeatingRequest()

java - 从 JTable 中获取选定行的内容作为对象的 ArrayList

java - 在 JTable 单元格中单击时组合框不会弹出

java.lang.NoSuchMethodError : org. springframework.core.convert.support.ConversionServiceFactory.createDefaultConversionService() 错误

java - Java中如何将不支持的字符转换为html实体

java - 在另一个列表的末尾添加列表(不仅仅是复制引用)

java - 字符数组列表

java: <identifier> 需要 ArrayList

java - 对 ArrayList 泛型进行强制转换