2012-01-19 18 views
2

私は現在javaのプロジェクトに取り組んでいます。 2つの項目を名前で比較するメソッドを作成する必要があります。私の最初のファイルはItemと呼ばれています。 2番目のファイルのarrayListItemsです。名前に基づいて2つのアイテムを比較する等しいメソッドを作成する必要があります。私はbooleanを返す必要があり、コードはこれで始まります。等しいメソッド:2つのオブジェクトを比較する

public boolean toEqual(Object o) 

私は次に何をするのか混乱しています。あなたがおそらくif else文と私が作成したgetName()メソッドを使う必要があることは分かっています。しかし、私はItemオブジェクトとしてオブジェクトをキャストすると思いますが、私はどのようにわかりません。誰でも何かを提案できますか?ありがとう。

答えて

2

あなたは何をすべきかで正しい、と今、あなたはちょうどそれを一緒に配置する必要があります。

http://www.javabeginner.com/learn-java/java-object-typecastingこのサイトには、Javaでのオブジェクトのキャストに関する情報があります。 Item

次はあなたがi.getName().equals(getName())かどうかを確認する必要がありますを入力してくださいoをキャストします

Item i = (Item) o; 

:基本的に別のオブジェクトを小文字ために、あなたはこのような何かを行います。あなたはその結果を返すことができ、完了する必要があります:)

幸運!

+2

「i.getName()== getName()」はコンテンツの比較ではなく参照の比較を行いますか? nameが 'String'型かnon-primititve型であると仮定すると、' i.getName()。equals(getName()) 'を使ってはいけませんか? – blahman

+1

@blahmanあなたが正しいです。更新しました。私はこれがJavaでC#ではなく、 –

1

あなたはこのようにオブジェクトをキャストすることができます -

(ClassName)obj 

をしかし、より良いアプローチは、java.lang.Object上位の& hashCodeメソッドに等しく、そこにそれを扱う上書きするだろう。それを正しくオーバーライドする方法を知っている、あなたはこの記事を参照することができますする - http://www.technofundo.com/tech/java/equalhash.html

HTH、 - マニッシュ

0

アイテムクラスにboolean equals(Object)int hashCode()を実装する必要があります。リスト内のcontains(Object)メソッドを呼び出して、一致するアイテムがリストに存在するかどうかを調べるだけだからです。

0

はあなたが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())); 
    } 
} 

実はあなたは public boolean toEqual(Item o)toEqualメソッドのシグネチャを変更することができます。この場合、キャスト操作は必要ありません。

public boolean toEqual(Item o) { 
    // Perform the compare 
    return (name.equals(o.getName())); 
} 
関連する問題