Равный метод: сравнение 2 объектов - PullRequest
2 голосов
/ 19 января 2012

В настоящее время я работаю над проектом в Java.Мне нужно создать метод, который сравнивает два элемента по имени.Мой первый файл называется Item, у которого есть имя.Второй файл имеет arrayList из Items.Мне нужно создать равный метод, который сравнивает два элемента на основе их имени.Мне нужно вернуть boolean, и код начинается с этого.

public boolean toEqual(Object o)

Я не понимаю, что делать дальше.Я знаю, что вам, вероятно, придется использовать оператор if else, а также метод getName(), который я создал.Тем не менее, я думаю, что я должен привести объект как объект Item, но я не знаю как.Кто-нибудь может предложить что-нибудь?Спасибо.

Ответы [ 4 ]

2 голосов
/ 19 января 2012

Вы правы в том, что делать, и теперь вам просто нужно собрать это вместе.

http://www.javabeginner.com/learn-java/java-object-typecasting На этом сайте есть некоторая информация о приведении объектов в Java.В основном, чтобы поместить один объект в другой, вы делаете что-то вроде этого:

Item i = (Item) o;

, который приведет ваш o к типу Item

Далее вам нужно посмотреть, если i.getName().equals(getName()),Вы можете вернуть этот результат, и вы должны сделать:)

Удачи!

1 голос
/ 19 января 2012

Вы можете привести объект следующим образом -

(ClassName)obj 

Однако, гораздо лучший подход - переопределить методы java.lang.Object equals & hashcode и обработать их там.Чтобы узнать, как правильно его переопределить, вы можете обратиться к этой статье - http://www.technofundo.com/tech/java/equalhash.html

HTH, - Manish

0 голосов
/ 19 января 2012

Допустим, у вас есть класс с именем Item И у вашего Item класса есть поле экземпляра с именем name, которое вы используете для хранения имени элемента.

class Item {
    private String name = "item name";

    public String getName() {
        return name
    }

    public boolean toEqual(Object o) {
        // Firstly cast it to Item
        Item item = (Item) o;
        // Then perform the compare
        return (name.equals(item.getName()));
    }
}

На самом деле вы можете изменить сигнатуру метода toEqual на public boolean toEqual(Item o). В этом случае вам не понадобится операция приведения.

public boolean toEqual(Item o) {
    // Perform the compare
    return (name.equals(o.getName()));
}
0 голосов
/ 19 января 2012

Вы должны реализовать boolean equals(Object) и int hashCode() для класса элемента, потому что тогда вы можете просто вызвать метод contains (Object) списка, чтобы найти, существует ли соответствующий элемент в списке.

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