I am facing with this unwanted char
to int
conversion in a loop. Say I have this List of Characters and I want to remove one of those:
List<Character> chars = new ArrayList<>();
chars.add('a');
chars.add('b');
chars.add('c');
chars.remove('a'); // or chars.remove('a'-'0');
so 'a'
is interpreted as its int
value and I'm getting an IndexOutOfBoundsException
exception. Is there any easy workaround for this?
A char
is promoted to an int
, which takes precedence over autoboxing, so remove(int)
is called instead of remove(Object)
you may have intuitively expect.
You can force the "right" method to be called by boxing the argument yourself:
chars.remove(Character.valueOf('a'));
You need to cast it to an object type to force the compiler to choose remove(Object)
instead of remove(int)
:
chars.remove((Character) 'a');
You can search through the list for where a
happens to be.
chars.remove(chars.indexOf('a'));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With