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'));