Я использовал этот Прямодушный метод:Java, целые числа не уникальны, но как они сравниваются в коллекциях?
Collection<Integer> aCollection = Arrays.asList(1,2,3,4,5,6);
Integer a = new Integer(5);
if(aCollection.contains(a))
System.out.println("aCollection contains 5");
Результата является "aCollection содержит 5". Целые числа не являются уникальными объектами всей системы, но в этом случае «5» в Collection<Integer>
и new Integer(5)
фактически ссылаются на один и тот же объект? Можно ли с уверенностью предположить, что любая коллекция будет вести себя таким образом при вызове .contains()
?
Я не уверен, потому что при сравнении ссылки и значения по ==
результата:
3 == new Integer(3)
new Integer(3) != new Integer(3)
new Integer(3) == 3
Вы можете решить такого рода сомнения, просто посмотрев на исходный код. –