Java 在arrayList中,删除从末尾开始计数的n个元素

Java 在arrayList中,删除从末尾开始计数的n个元素,java,arraylist,Java,Arraylist,就像我的标题一样,这个方法询问有多少元素: //delete elements from deleteFromEnd up to arrayList.size() index int deleteFromEnd; do { System.out.format("How many elements you want to delete, counting from end ( less then %d): ", arrayList.size());

就像我的标题一样,这个方法询问有多少元素:

//delete elements from deleteFromEnd up to arrayList.size() index
    int deleteFromEnd;
    do
    {
        System.out.format("How many elements you want to delete, counting from end ( less then %d): ", arrayList.size());
        deleteFromEnd = scan.nextInt();
    }while (deleteFromEnd > arrayList.size());
do
    {
        arrayList.remove(arrayList.size());
        i++;
    }while(i < deleteFromEnd);
然后我尝试删除这些元素:

//delete elements from deleteFromEnd up to arrayList.size() index
    int deleteFromEnd;
    do
    {
        System.out.format("How many elements you want to delete, counting from end ( less then %d): ", arrayList.size());
        deleteFromEnd = scan.nextInt();
    }while (deleteFromEnd > arrayList.size());
do
    {
        arrayList.remove(arrayList.size());
        i++;
    }while(i < deleteFromEnd);

任何想法,解决这个问题的最佳想法是什么?

在Java数组中,索引从
0
开始,因此大小为
n
列表的最后一个索引是
n-1

然而,有一个更好的方法。我们为要删除的范围获取一个子列表(它是原始
列表上的视图,而不是副本),然后清除它

arrayList.subList(arrayList.size()-deleteFromEnd, arrayList.size()).clear();

arrayList.remove(arrayList.size()-1)请不要忘记发布完整的错误消息和完整的示例来测试它。阅读,谢谢。
remove
需要索引。索引基于
0
。因此,第一个元素位于索引
0
。最后一个是
size-1
,而不是
size
。检查一下。@Zabuza我没有收到任何错误,它根本不起作用,这就是我没有发布任何错误的原因。然后你需要更精确地解释到底发生了什么以及预期会发生什么。并给予充分的支持。“它不工作”没有帮助。这将清除0到arrayList.size()的所有元素-deleteFromEnd@ArnaultLePr埃沃斯特·科维莱克:是的,修正了。这真是个好主意,我读过关于子列表的文章,这真的很酷。这正是我想说的,但不知道怎么说,所以我用了loop:D谢谢你的帮助。