0

Can some explain this code to me please?

class Animal { String name; Animal(String n) { name = n; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Ani

15th Feb 2017, 9:35 PM
Faoud Mohammed
Faoud Mohammed - avatar
4 odpowiedzi
+ 9
Yes, hashCode belongs to object class, and equals too. Is recommended to overwrite them if you gonna use it. hasCode is used to generate key values for hash data structures, like a hash table. It must return different values for each object with different attribute values. equals is used to know if two objects have the same attribute values. If you use '==', it just compare object references. Hope this make sense for you. ;)
16th Feb 2017, 3:19 AM
Salva Pérez
Salva Pérez - avatar
+ 2
The explanation is added as comments. I hope it can be at least a little bit useful: class Animal { String name; /* simple constructor ~ assigning of name value (object of String) */ Animal(String n) { name = n; } @Override public int hashCode() { final int prime = 31; int result = 1; /* basically if the name is null (no object of string class is assigned to name) it counts result as : prime*result (because result is 1 it can even be just prime) is the name is not null it counts hash (result) as sum of prime*result + name.hashCode () (hashCode of name added with prime) here the ternary operator is used instead of if statement (https://en.m.wikipedia.org/wiki/%3F:) */ result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } /* here the function returns true, when object to be compared is the same ( it is the same instance of class) when the object to compare is null (actually nothing) or is not of the same class, it returns false ( there is the case, when the object is of same class but not the exactly same instance, which is not considered ) */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false;
16th Feb 2017, 12:11 AM
Veronika L
Veronika L - avatar
0
is the name.Hashcode() a built in function belong to the object class?
16th Feb 2017, 2:42 AM
Faoud Mohammed
Faoud Mohammed - avatar
0
thanks guys
16th Feb 2017, 10:35 AM
Faoud Mohammed
Faoud Mohammed - avatar