Avatar billede simonvalter Praktikant
02. april 2004 - 16:36 Der er 4 kommentarer og
1 løsning

laver jeg equals og hashCode rigtigt

jeg vil bare have svar på om jeg har forstået det helt rigtigt hvordan man laver hashcode og equals.

dette er en rss 2.0 channel og jeg bruger kun de 3 elementer der skal være der til at lave dem.. måske burde jeg tage nogen af de andre med?


public class Channel {
    /****************************************************************
    * Required channel elements;
    ****************************************************************/

    /**
    * The name of the channel.
    * It's how people refer to your service.
    * If you have an HTML website that contains the same information as your RSS file, t
    * he title of your channel should be the same as the title of your website.
    */
    private String title;

    /**
    * The URL to the HTML website corresponding to the channel.
    */
    private URL link;

    /**
    * Phrase or sentence describing the channel.
    */
    private String description;
     
 
  public boolean equals(Object o)
    {
        if (o == this)
        {
            return true;
        }
        if (! (o instanceof Channel))
        {
            return false;
        }
        Channel channel = (Channel) o;
        return channel.title.equals(title) && channel.link.equals(link) &&
            channel.description.equals(description);
    }

    public int hashCode()
    {
        int result = 17;
        result = 37 * result + title.hashCode();
        result = 37 * result + link.hashCode();
        result = 37 * result + description.hashCode();
        return result;
    }
Avatar billede simonvalter Praktikant
02. april 2004 - 17:04 #1
jeg er iøvrigt lidt mere i tvivl omkring når jeg skal lave hashcode på atributter der kan være null

kan hashcoden godt være - ? for når jeg udskriver hashcode for mine items får jeg

-1772736825
1921800710
1969517680
260407849
378989950
-313455788
-706462482
1479023306
-661939359
Avatar billede arne_v Ekspert
02. april 2004 - 17:09 #2
kontrakten mellem equals og hashCode er overholdt

o==this må udelukkende være p.g.a. performance

hashCode algoritmen med 17 og 37 er ofte brugt
Avatar billede arne_v Ekspert
02. april 2004 - 17:11 #3
attr!=null ? attr.hashCode() : 0

brugt f.eks.

http://uml2ejb.sourceforge.net/pages/java/DriverData.html
Avatar billede arne_v Ekspert
02. april 2004 - 17:13 #4
Og hashCode kan sagtens være negativ.
Avatar billede simonvalter Praktikant
02. april 2004 - 17:15 #5
ok mange tak, eksemplet var lige hvad jeg ledte efter
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester