У меня вопрос: когда я создаю новое целое число, используя новое целое число (i), смогу ли я сравнить целые числа, используя ArrayList.contains ()? То есть, когда я создаю новый объект, используя new Integer (i), будет ли он совпадать с ранее созданным объектом Integer, если значение int, использованное для их создания, одинаково?
Короткий ответ - да.
Длинный ответ ...
То есть, когда я создаю новый объект с использованием нового Integer (i), будет ли он таким же, как ранее созданный объект Integer, если значение int, использованное для их создания, совпадает?
Полагаю, вы имеете в виду "... это будет тот же экземпляр , что и ..." ? Ответ на этот вопрос no - вызов new
всегда будет создавать отдельный экземпляр, отличный от предыдущего, даже если параметры конструктора идентичны.
Однако, несмотря на отдельную идентичность , эти два объекта будут иметь эквивалентное значение , т.е. вызов .equals () между ними вернет true.
Collection.contains ()
Оказывается, что иметь отдельные экземпляры эквивалентного значения ( .equals () возвращает true ) нормально. Метод .contains()
находится в интерфейсе Collection
. Описание Javadoc для .contains()
гласит:
http://java.sun.com/javase/6/docs/api/java/util/Collection.html#contains(java.lang.Object)
логическое значение содержит (Объект o)
Возвращает true, если эта коллекция
содержит указанный элемент. Больше
формально возвращает true тогда и только тогда, когда
эта коллекция содержит хотя бы один
элемент e такой, что (o == null? e == null
: o.equals (e)) .
Таким образом, он будет делать то, что вы хотите.
Структура данных
Вам также следует подумать о правильной структуре данных.
Список только о сдерживании? порядок важен? Вы заботитесь о дубликатах? Поскольку список - это порядок, использование списка может означать, что ваш код заботится о порядке. Или что вам нужно поддерживать дубликаты в структуре данных.
Однако, если порядок не важен, если вы не хотите или не будете иметь дубликаты, и если вы действительно используете эту структуру данных только для проверки, содержит ли определенное значение, , тогда , вы можете хотите решить, следует ли вам вместо этого использовать Set .