【问题标题】:Removing a character from an ArrayList of characters从字符的 ArrayList 中删除一个字符
【发布时间】:2016-12-16 03:01:53
【问题描述】:

我在循环中面临这种不需要的charint 的转换。假设我有这个字符列表,我想删除其中一个:

List<Character> chars = new ArrayList<>();
chars.add('a');
chars.add('b');
chars.add('c');
chars.remove('a');  // or chars.remove('a'-'0');

所以'a' 被解释为它的int 值,我得到一个IndexOutOfBoundsException 异常。有什么简单的解决方法吗?

【问题讨论】:

    标签: java list arraylist char


    【解决方案1】:

    char 被提升为 int,它优先于自动装箱,因此调用 remove(int) 而不是您可能直观期望的 remove(Object)

    您可以通过自己装箱参数来强制调用“正确”的方法:

    chars.remove(Character.valueOf('a'));
    

    【讨论】:

      【解决方案2】:

      您需要将其强制转换为对象类型以强制编译器选择remove(Object) 而不是remove(int)

      chars.remove((Character) 'a');
      

      【讨论】:

        【解决方案3】:

        您可以在列表中搜索a 的位置。

        chars.remove(chars.indexOf('a'));
        

        【讨论】:

        • 没必要;你只需要调用正确的重载。
        • 哇,我第二次猜到自己了。我最初说要明确地转换它,然后改变了我的答案。
        • 我知道,但您最初的演员阵容(我相信)是错误的。转换为相同类型没有效果。看我的回答。
        • 反正我错了。无论哪种方式,我都将您的投票选为正确答案:)。不妨把这个作为另一种方式。
        猜你喜欢
        • 1970-01-01
        • 2023-03-14
        • 2014-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-12
        相关资源
        最近更新 更多