Java 从字符数组列表中删除字符

Java 从字符数组列表中删除字符,java,list,arraylist,char,Java,List,Arraylist,Char,我面临着循环中不需要的char到int的转换。假设我有这个字符列表,我想删除其中一个: List<Character> chars = new ArrayList<>(); chars.add('a'); chars.add('b'); chars.add('c'); chars.remove('a'); // or chars.remove('a'-'0'); List chars=new ArrayList(); chars.添加('a'); 添加字符('b');

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

List<Character> chars = new ArrayList<>();
chars.add('a');
chars.add('b');
chars.add('c');
chars.remove('a');  // or chars.remove('a'-'0');
List chars=new ArrayList();
chars.添加('a');
添加字符('b');
添加字符(“c”);
chars.remove('a');//或chars.remove('a'-'0');

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

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

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

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


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

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

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

没有这个必要;你只需要打电话给正确的过载。哇,我自己又猜到了。我最初说要明确地投下它,然后改变了我的答案。我知道,但你最初的投法(我相信)是错误的。铸造到同一类型没有效果。看看我的答案,反正我错了。不管怎样,我都认为你的答案是正确的:)。还是换个方式吧。
chars.remove(Character.valueOf('a'));