Skip to content

Instantly share code, notes, and snippets.

@ktoso
Created April 19, 2011 08:48
Show Gist options
  • Save ktoso/927024 to your computer and use it in GitHub Desktop.
Save ktoso/927024 to your computer and use it in GitHub Desktop.
equals and hashCode in JDK7
package pl.project13;
import java.util.Objects;
/**
* Date: 4/19/11
*
* @author Konrad Malawski
*/
public class Test {
private String name;
private String surname;
private Integer age;
public Test() {
}
public Test(String name, String surname, Integer age) {
this.name = name;
this.surname = surname;
this.age = age;
}
public Test(String name, String surname) {
this.name = name;
this.surname = surname;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Test)) return false;
// if (o == null || getClass() != o.getClass()) return false;
Test that = (Test) o;
boolean result = true;
result = result && Objects.equals(this.name, that.name);
result = result && Objects.equals(this.surname, that.surname);
result = result && Objects.equals(this.age, that.age);
return result;
}
@Override
public int hashCode() {
return Objects.hash(name, surname, age);
}
}
package pl.project13;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
/**
* Date: 4/19/11
*
* @author Konrad Malawski
*/
public class TestTest {
@org.junit.Test
public void testEquals() throws Exception {
Test test = new Test("Konrad", "Malawski", 21);
// true
assertTrue(test.equals(test));
assertTrue(test.equals(new Test("Konrad", "Malawski", 21)));
// false
assertFalse(test.equals(new Test("Wacław", "Malawski", 1825)));
assertFalse(test.equals(new Test("Wacław", "Malawski")));
assertFalse(test.equals(new Test()));
assertFalse(test.equals(new Object()));
assertFalse(test.equals(null));
}
@org.junit.Test
public void testHashCodeOnCollections() throws Exception {
Test test = new Test("Konrad", "Malawski", 21);
int sizeBefore;
int sizeAfter;
Set<Test> treeSet = new HashSet<>();
treeSet.add(test);
sizeBefore = treeSet.size();
treeSet.add(test);
sizeAfter = treeSet.size();
assertEquals(sizeBefore, sizeAfter);
}
@org.junit.Test
public void testHashCodeOnCollectionsOtherObject() throws Exception {
Test test = new Test("Konrad", "Malawski", 21);
Test test2 = new Test("Konrad", "Malawski", 21);
int sizeBefore;
int sizeAfter;
Set<Test> treeSet = new HashSet<>();
treeSet.add(test);
sizeBefore = treeSet.size();
treeSet.add(test2);
sizeAfter = treeSet.size();
assertEquals(sizeBefore, sizeAfter);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment