* BAEL-4925

* BAEL-4925
This commit is contained in:
Amy DeGregorio 2021-05-08 21:35:48 -04:00 committed by GitHub
parent 99213ea74c
commit d75f672e85
3 changed files with 191 additions and 0 deletions

View File

@ -0,0 +1,91 @@
package com.baeldung.hash;
import java.util.Objects;
public class Player {
private String firstName;
private String lastName;
private String position;
public Player() {
}
public Player(String firstName, String lastName, String position) {
this.firstName = firstName;
this.lastName = lastName;
this.position = position;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
@Override
public int hashCode() {
return Objects.hash(firstName, lastName, position);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Player other = (Player) obj;
if (firstName == null) {
if (other.firstName != null) {
return false;
}
} else if (!firstName.equals(other.firstName)) {
return false;
}
if (lastName == null) {
if (other.lastName != null) {
return false;
}
} else if (!lastName.equals(other.lastName)) {
return false;
}
if (position == null) {
if (other.position != null) {
return false;
}
} else if (!position.equals(other.position)) {
return false;
}
return true;
}
}

View File

@ -0,0 +1,67 @@
package com.baeldung.hash;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import java.util.Objects;
import org.junit.Test;
public class HashCodeUnitTest {
@Test
public void whenCallingObjectsHashCodeOnIndenticalObjects_thenSameHashCodeReturned() {
String stringOne = "test";
String stringTwo = "test";
int hashCode1 = Objects.hashCode(stringOne);
int hashCode2 = Objects.hashCode(stringTwo);
assertEquals(hashCode1, hashCode2);
}
@Test
public void whenCallingObjectsHashCodeOnNullObject_thenZeroReturned() {
String nullString = null;
int hashCode = Objects.hashCode(nullString);
assertEquals(0, hashCode);
}
@Test
public void whenCallingObjectHashCodeOnIndenticalObjects_thenSameHashCodeReturned() {
Double valueOne = Double.valueOf(1.0012);
Double valueTwo = Double.valueOf(1.0012);
int hashCode1 = valueOne.hashCode();
int hashCode2 = valueTwo.hashCode();
assertEquals(hashCode1, hashCode2);
}
@Test(expected = NullPointerException.class)
public void whenCallingObjectHashCodeOnNullObject_theNullPointerExceptionThrown() {
Double value = null;
value.hashCode();
}
@Test
public void whenCallingObjectsHashOnStrings_thenSameHashCodeReturned() {
String strOne = "one";
String strTwo = "two";
String strOne2 = "one";
String strTwo2 = "two";
int hashCode1 = Objects.hash(strOne, strTwo);
int hashCode2 = Objects.hash(strOne2, strTwo2);
assertEquals(hashCode1, hashCode2);
}
@Test
public void whenCallingObjectsHashOnSingleString_thenDifferentHashcodeFromObjectsHashCodeCallReturned() {
String testString = "test string";
int hashCode1 = Objects.hash(testString);
int hashCode2 = Objects.hashCode(testString);
assertNotEquals(hashCode1, hashCode2);
}
}

View File

@ -0,0 +1,33 @@
package com.baeldung.hash;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import org.junit.Test;
public class PlayerUnitTest {
@Test
public void whenCallingHashCodeOnIdenticalValue_thenSameHashCodeReturned() {
Player player = new Player("Eduardo", "Rodriguez", "Pitcher");
Player indenticalPlayer = new Player("Eduardo", "Rodriguez", "Pitcher");
int hashCode1 = player.hashCode();
int hashCode2 = player.hashCode();
int hashCode3 = indenticalPlayer.hashCode();
assertEquals(hashCode1, hashCode2);
assertEquals(hashCode1, hashCode3);
}
@Test
public void whenCallingHashCodeAndArraysHashCode_thenSameHashCodeReturned() {
Player player = new Player("Bobby", "Dalbec", "First Base");
int hashcode1 = player.hashCode();
String[] playerInfo = { "Bobby", "Dalbec", "First Base" };
int hashcode2 = Arrays.hashCode(playerInfo);
assertEquals(hashcode1, hashcode2);
}
}