Created
April 19, 2011 08:48
-
-
Save ktoso/927024 to your computer and use it in GitHub Desktop.
equals and hashCode in JDK7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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