java - Properly removing an Integer from a List<Integer> -
here's nice pitfall encountered. consider list of integers:
list<integer> list = new arraylist<integer>(); list.add(5); list.add(6); list.add(7); list.add(1); any educated guess on happens when execute list.remove(1)? list.remove(new integer(1))? can cause nasty bugs.
what proper way differentiate between remove(int index), removes element given index , remove(object o), removes element reference, when dealing lists of integers?
the main point consider here 1 @nikita mentioned - exact parameter matching takes precedence on auto-boxing.
java calls method best suits argument. auto boxing , implicit upcasting performed if there's no method can called without casting / auto boxing.
the list interface specifies 2 remove methods (please note naming of arguments):
remove(object o)remove(int index)
that means list.remove(1) removes object @ position 1 , remove(new integer(1)) removes first occurrence of specified element list.
Comments
Post a Comment