从列表中删除最后一个元素

13

我被委托在Java ArrayList的新手教程中完成以下内容:

// 1) Declare am ArrayList of strings
    // 2) Call the add method and add 10 random strings
    // 3) Iterate through all the elements in the ArrayList
    // 4) Remove the first and last element of the ArrayList
    // 5) Iterate through all the elements in the ArrayList, again.

以下是我的代码

import java.util.ArrayList;
import java.util.Random;

public class Ex1_BasicArrayList {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        for (int i = 0; i <= 10; i++){
            Random rand = new Random();
            String randy = String.valueOf(rand);
            list.add(randy );
        }
        for (int i = 0; i < list.size(); i++){
            System.out.print(list.get(i));
        }   
        list.remove(0);
        list.remove(list.size());

        for (int i = 0; i < list.size(); i++){
            System.out.print(list.get(i));
        }
    }
}
代码可以运行,但在运行过程中我收到了以下错误信息。有任何关于我做错了什么的想法吗?
java.util.Random@7852e922java.util.Random@4e25154fjava.util.Random@70dea4ejava.util.Random@5c647e05java.util.Random@33909752java.util.Random@55f96302java.util.Random@3d4eac69java.util.Random@42a57993java.util.Random@75b84c92java.util.Random@6bc7c054Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 10, Size: 10
    at java.util.ArrayList.rangeCheck(Unknown Source)
    at java.util.ArrayList.remove(Unknown Source)
    at apollo.exercises.ch08_collections.Ex1_BasicArrayList.main(Ex1_BasicArrayList.java:23)

你对第2个任务的解决方案非常有趣 :D。 - Tom
@Tom 哈哈...有趣吗?我有没有更好的方法可以做到这一点? - Kenneth Yong
1
是的,通过创建真正的随机字符串而不仅仅是 instanceOfRandomClass.toString() 的输出。 - Tom
@Tom 嗯,我不确定那是什么...但我会查一下并将其实现到我的代码中 :) 谢谢你的提示。 - Kenneth Yong
你可以在Stackoverflow上搜索相关内容。有一些关于Java中随机字符串的问题(和答案)。 - Tom
这个回答是否解决了你的问题?在Java中移除ArrayList的最后一个对象 - Oleksandr Pyrohov
3个回答

31

List 的索引范围是从 0list.size() - 1。超出上限会导致 IndexOutOfBoundsException

list.remove(list.size() - 1);

1
如果Java有像C++中std::vector的pop_back()一样专门用于此的函数,那就太好了。 - Lev Leontev
是的,一些整洁的函数还缺失,以下是一些说明了的例子:https://xenovation.com/blog/development/java/remove-last-element-from-list-java - cilap

3
你的列表有11个元素,它们的索引是0-10。当你调用list.remove(list.size());时,你要求它移除索引为11的元素(因为列表大小为11),但这个索引超出了范围。
任何列表中最后一个元素的索引总是list.size() - 1

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接