ArrayList объекты в Java - PullRequest
       4

ArrayList объекты в Java

1 голос
/ 27 марта 2011

Когда я использую ArrayList

 ArrayList<item> List = new ArrayList<item>();

 Item a = new Item(1,"Book");
 Item b = new Item(2,"Shoes");

 List.add(a);
 List.add(b);

 Item c = new Item(1,"Book");

 if(List.equals(c)) //Will this code return true?

, если нет, может кто-нибудь сказать, в каком случае List.equals (c) вернет true.Потому что предмет может иметь много атрибутов, идентификатора, имени, цены.Проверяет ли это ссылочное имя?или сравните атрибуты.

Ответы [ 3 ]

3 голосов
/ 27 марта 2011

Прежде всего, вы должны использовать contains метод, а не equals. Contains проверяет, есть ли элемент в списке. Но equals проверяет, равен ли список другому списку.

Теперь к вашему вопросу - Contains будет искать реализацию метода equals (тот, который унаследован от Object). По умолчанию он сравнивает ссылки. Если вы хотите сравнить атрибуты, переопределите его, чтобы использовать собственную логику сравнения.

1 голос
/ 27 марта 2011

Нет, он вернет false, потому что c не равен списку.Равно означает равно равно :), поэтому вы хотите использовать метод метода:

list.contains(c);

Подробнее: В исходном коде Java вы можете найти, что именно означает равно при вызове его в ArrayList:

public boolean equals(Object o) {
    if (o == this)
        return true;
    if (!(o instanceof List)) // your object IS NOT instanceof with List interface
        return false;
    ...
}
1 голос
/ 27 марта 2011

Из солнечного дока о равных.

Чак здесь http://download.oracle.com/javase/1.4.2/docs/api/java/util/List.html#equals(java.lang.Object)

Сравнивает указанный объект с этим списком на равенство. Возвращает true, если и только если указанный объект также является списком, оба списка имеют одинаковый размер, и все соответствующие пары элементов в двух списках равны. (Два элемента e1 и e2 равны, если (e1 == null? E2 == null: e1.equals (e2)).) Другими словами, два списка определяются как равные, если они содержат одинаковые элементы в одинаковом порядке. , Это определение гарантирует, что метод equals работает правильно в разных реализациях интерфейса List.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...