I noticed strange situation:
consider these code snippets:
1
List<Integer> list= new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.remove(new Integer(1));
out:
[2, 3]
2
List<Integer> list= new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.remove(1);
System.out.println(list);
out:
[1, 3]
After comparison of first two snippets I thought that in first case code works so thanks to integers pool
but following snippet reassured me:
3
List<Integer> list= new ArrayList<>();
list.add( new Integer(12345));
list.add(2);
list.add(3);
list.remove(new Integer(12345));
System.out.println(list);
out:
[2, 3]
Please explain what rules does ArrayList use to detect object or index?