From 15d45cffd66a9a326d5f539508661ee6ab4000fa Mon Sep 17 00:00:00 2001 From: Nancy Bosecker Date: Wed, 7 Sep 2016 21:39:27 -0700 Subject: [PATCH] updated code/tests based on feedback (#676) --- .../equalshashcode/entities/ComplexClass.java | 100 +++++++++--------- .../entities/PrimitiveClass.java | 84 +++++++-------- .../equalshashcode/entities/Rectangle.java | 98 +++++++++-------- .../equalshashcode/entities/Shape.java | 4 +- .../equalshashcode/entities/Square.java | 79 ++++++++------ .../entities/ComplexClassTest.java | 49 ++++----- .../entities/PrimitiveClassTest.java | 31 +++--- .../entities/SquareClassTest.java | 37 +++---- 8 files changed, 236 insertions(+), 246 deletions(-) diff --git a/eclipse/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java b/eclipse/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java index f8c85ab8b5..3f7723facd 100644 --- a/eclipse/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java +++ b/eclipse/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java @@ -5,63 +5,59 @@ import java.util.HashSet; public class ComplexClass { - private ArrayList genericArrayList; - private HashSet integerHashSet; + private ArrayList genericArrayList; + private HashSet integerHashSet; - public ComplexClass(ArrayList genericArrayList, - HashSet integerHashSet) { - super(); - this.genericArrayList = genericArrayList; - this.integerHashSet = integerHashSet; - } + public ComplexClass(ArrayList genericArrayList, HashSet integerHashSet) { + super(); + this.genericArrayList = genericArrayList; + this.integerHashSet = integerHashSet; + } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime - * result - + ((genericArrayList == null) ? 0 : genericArrayList.hashCode()); - result = prime * result - + ((integerHashSet == null) ? 0 : integerHashSet.hashCode()); - return result; - } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((genericArrayList == null) ? 0 : genericArrayList.hashCode()); + result = prime * result + ((integerHashSet == null) ? 0 : integerHashSet.hashCode()); + return result; + } - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (!(obj instanceof ComplexClass)) - return false; - ComplexClass other = (ComplexClass) obj; - if (genericArrayList == null) { - if (other.genericArrayList != null) - return false; - } else if (!genericArrayList.equals(other.genericArrayList)) - return false; - if (integerHashSet == null) { - if (other.integerHashSet != null) - return false; - } else if (!integerHashSet.equals(other.integerHashSet)) - return false; - return true; - } + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (!(obj instanceof ComplexClass)) + return false; + ComplexClass other = (ComplexClass) obj; + if (genericArrayList == null) { + if (other.genericArrayList != null) + return false; + } else if (!genericArrayList.equals(other.genericArrayList)) + return false; + if (integerHashSet == null) { + if (other.integerHashSet != null) + return false; + } else if (!integerHashSet.equals(other.integerHashSet)) + return false; + return true; + } - protected ArrayList getGenericArrayList() { - return genericArrayList; - } + protected ArrayList getGenericArrayList() { + return genericArrayList; + } - protected void setGenericArrayList(ArrayList genericArrayList) { - this.genericArrayList = genericArrayList; - } + protected void setGenericArrayList(ArrayList genericArrayList) { + this.genericArrayList = genericArrayList; + } - protected HashSet getIntegerHashSet() { - return integerHashSet; - } + protected HashSet getIntegerHashSet() { + return integerHashSet; + } - protected void setIntegerHashSet(HashSet integerHashSet) { - this.integerHashSet = integerHashSet; - } + protected void setIntegerHashSet(HashSet integerHashSet) { + this.integerHashSet = integerHashSet; + } } diff --git a/eclipse/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java b/eclipse/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java index 6cd4af5fdb..ebe005688c 100644 --- a/eclipse/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java +++ b/eclipse/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java @@ -2,53 +2,53 @@ package org.baeldung.equalshashcode.entities; public class PrimitiveClass { - private boolean primitiveBoolean; - private int primitiveInt; + private boolean primitiveBoolean; + private int primitiveInt; - public PrimitiveClass(boolean primitiveBoolean, int primitiveInt) { - super(); - this.primitiveBoolean = primitiveBoolean; - this.primitiveInt = primitiveInt; - } + public PrimitiveClass(boolean primitiveBoolean, int primitiveInt) { + super(); + this.primitiveBoolean = primitiveBoolean; + this.primitiveInt = primitiveInt; + } - protected boolean isPrimitiveBoolean() { - return primitiveBoolean; - } + protected boolean isPrimitiveBoolean() { + return primitiveBoolean; + } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (primitiveBoolean ? 1231 : 1237); - result = prime * result + primitiveInt; - return result; - } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + (primitiveBoolean ? 1231 : 1237); + result = prime * result + primitiveInt; + return result; + } - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - PrimitiveClass other = (PrimitiveClass) obj; - if (primitiveBoolean != other.primitiveBoolean) - return false; - if (primitiveInt != other.primitiveInt) - return false; - return true; - } + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + PrimitiveClass other = (PrimitiveClass) obj; + if (primitiveBoolean != other.primitiveBoolean) + return false; + if (primitiveInt != other.primitiveInt) + return false; + return true; + } - protected void setPrimitiveBoolean(boolean primitiveBoolean) { - this.primitiveBoolean = primitiveBoolean; - } + protected void setPrimitiveBoolean(boolean primitiveBoolean) { + this.primitiveBoolean = primitiveBoolean; + } - protected int getPrimitiveInt() { - return primitiveInt; - } + protected int getPrimitiveInt() { + return primitiveInt; + } - protected void setPrimitiveInt(int primitiveInt) { - this.primitiveInt = primitiveInt; - } + protected void setPrimitiveInt(int primitiveInt) { + this.primitiveInt = primitiveInt; + } } diff --git a/eclipse/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java b/eclipse/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java index 61d20cbb05..315ef41a12 100644 --- a/eclipse/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java +++ b/eclipse/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java @@ -1,62 +1,60 @@ package org.baeldung.equalshashcode.entities; public class Rectangle extends Shape { - private double width; - private double length; + private double width; + private double length; - public Rectangle(double width, double length) { - this.width = width; - this.length = length; - } + public Rectangle(double width, double length) { + this.width = width; + this.length = length; + } - @Override - public double area() { - // A = w * l - return width * length; - } + @Override + public double area() { + // A = w * l + return width * length; + } - @Override - public double perimeter() { - // P = 2(w + l) - return 2 * (width + length); - } + @Override + public double perimeter() { + // P = 2(w + l) + return 2 * (width + length); + } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - long temp; - temp = Double.doubleToLongBits(length); - result = prime * result + (int) (temp ^ (temp >>> 32)); - temp = Double.doubleToLongBits(width); - result = prime * result + (int) (temp ^ (temp >>> 32)); - return result; - } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + long temp; + temp = Double.doubleToLongBits(length); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(width); + result = prime * result + (int) (temp ^ (temp >>> 32)); + return result; + } - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Rectangle other = (Rectangle) obj; - if (Double.doubleToLongBits(length) != Double - .doubleToLongBits(other.length)) - return false; - if (Double.doubleToLongBits(width) != Double - .doubleToLongBits(other.width)) - return false; - return true; - } + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Rectangle other = (Rectangle) obj; + if (Double.doubleToLongBits(length) != Double.doubleToLongBits(other.length)) + return false; + if (Double.doubleToLongBits(width) != Double.doubleToLongBits(other.width)) + return false; + return true; + } - protected double getWidth() { - return width; - } + protected double getWidth() { + return width; + } - protected double getLength() { - return length; - } + protected double getLength() { + return length; + } } \ No newline at end of file diff --git a/eclipse/src/main/java/org/baeldung/equalshashcode/entities/Shape.java b/eclipse/src/main/java/org/baeldung/equalshashcode/entities/Shape.java index 7f779e6ef2..3bfc81da8f 100644 --- a/eclipse/src/main/java/org/baeldung/equalshashcode/entities/Shape.java +++ b/eclipse/src/main/java/org/baeldung/equalshashcode/entities/Shape.java @@ -1,7 +1,7 @@ package org.baeldung.equalshashcode.entities; public abstract class Shape { - public abstract double area(); + public abstract double area(); - public abstract double perimeter(); + public abstract double perimeter(); } diff --git a/eclipse/src/main/java/org/baeldung/equalshashcode/entities/Square.java b/eclipse/src/main/java/org/baeldung/equalshashcode/entities/Square.java index 0bebc1e380..f11e34f0ba 100644 --- a/eclipse/src/main/java/org/baeldung/equalshashcode/entities/Square.java +++ b/eclipse/src/main/java/org/baeldung/equalshashcode/entities/Square.java @@ -4,44 +4,55 @@ import java.awt.Color; public class Square extends Rectangle { - Color color; + Color color; - public Square(double width, Color color) { - super(width, width); - this.color = color; - } + public Square(double width, Color color) { + super(width, width); + this.color = color; + } - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((color == null) ? 0 : color.hashCode()); - return result; - } + /* (non-Javadoc) + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + ((color == null) ? 0 : color.hashCode()); + return result; + } - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) - return false; - Square other = (Square) obj; - if (color == null) { - if (other.color != null) - return false; - } else if (!color.equals(other.color)) - return false; - return true; - } + /* (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (!(obj instanceof Square)) { + return false; + } + Square other = (Square) obj; + if (color == null) { + if (other.color != null) { + return false; + } + } else if (!color.equals(other.color)) { + return false; + } + return true; + } - protected Color getColor() { - return color; - } + protected Color getColor() { + return color; + } - protected void setColor(Color color) { - this.color = color; - } + protected void setColor(Color color) { + this.color = color; + } } diff --git a/eclipse/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassTest.java b/eclipse/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassTest.java index 2cca44bb9e..09123e988b 100644 --- a/eclipse/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassTest.java +++ b/eclipse/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassTest.java @@ -8,32 +8,27 @@ import org.junit.Test; public class ComplexClassTest { - @Test - public void testEqualsAndHashcodes() { - - ArrayList strArrayList = new ArrayList(); - strArrayList.add("abc"); - strArrayList.add("def"); - ComplexClass aObject = new ComplexClass(strArrayList, new HashSet(45,67)); - ComplexClass bObject = new ComplexClass(strArrayList, new HashSet(45,67)); - ComplexClass cObject = new ComplexClass(strArrayList, new HashSet(45,67)); - - ArrayList strArrayListD = new ArrayList(); - strArrayListD.add("lmn"); - strArrayListD.add("pqr"); - ComplexClass dObject = new ComplexClass(strArrayListD, new HashSet(45,67)); - - // equals() - Assert.assertTrue(aObject.equals(aObject)); - Assert.assertTrue(aObject.equals(bObject) && bObject.equals(aObject)); - Assert.assertTrue(aObject.equals(bObject)); - Assert.assertTrue(bObject.equals(cObject)); - Assert.assertTrue(aObject.equals(cObject)); - // hashCode() - Assert.assertTrue(aObject.hashCode() == bObject.hashCode()); - // non-equal objects are not equals() and have different hashCode() - Assert.assertFalse(aObject.equals(dObject)); - Assert.assertFalse(aObject.hashCode() == dObject.hashCode()); - } + @Test + public void testEqualsAndHashcodes() { + + ArrayList strArrayList = new ArrayList(); + strArrayList.add("abc"); + strArrayList.add("def"); + ComplexClass aObject = new ComplexClass(strArrayList, new HashSet(45, 67)); + ComplexClass bObject = new ComplexClass(strArrayList, new HashSet(45, 67)); + + ArrayList strArrayListD = new ArrayList(); + strArrayListD.add("lmn"); + strArrayListD.add("pqr"); + ComplexClass dObject = new ComplexClass(strArrayListD, new HashSet(45, 67)); + + // equals() + Assert.assertTrue(aObject.equals(bObject) && bObject.equals(aObject)); + // hashCode() + Assert.assertTrue(aObject.hashCode() == bObject.hashCode()); + // non-equal objects are not equals() and have different hashCode() + Assert.assertFalse(aObject.equals(dObject)); + Assert.assertFalse(aObject.hashCode() == dObject.hashCode()); + } } diff --git a/eclipse/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassTest.java b/eclipse/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassTest.java index 009753d1ae..feb04d65ff 100644 --- a/eclipse/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassTest.java +++ b/eclipse/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassTest.java @@ -5,25 +5,20 @@ import org.junit.Test; public class PrimitiveClassTest { - @Test - public void testTwoEqualsObjects() { + @Test + public void testTwoEqualsObjects() { - PrimitiveClass aObject = new PrimitiveClass(false, 2); - PrimitiveClass bObject = new PrimitiveClass(false, 2); - PrimitiveClass cObject = new PrimitiveClass(false, 2); - PrimitiveClass dObject = new PrimitiveClass(true, 2); + PrimitiveClass aObject = new PrimitiveClass(false, 2); + PrimitiveClass bObject = new PrimitiveClass(false, 2); + PrimitiveClass dObject = new PrimitiveClass(true, 2); - // equals() - Assert.assertTrue(aObject.equals(aObject)); - Assert.assertTrue(aObject.equals(bObject) && bObject.equals(aObject)); - Assert.assertTrue(aObject.equals(bObject)); - Assert.assertTrue(bObject.equals(cObject)); - Assert.assertTrue(aObject.equals(cObject)); - // hashCode() - Assert.assertTrue(aObject.hashCode() == bObject.hashCode()); - // non-equal objects are not equals() and have different hashCode() - Assert.assertFalse(aObject.equals(dObject)); - Assert.assertFalse(aObject.hashCode() == dObject.hashCode()); - } + // equals() + Assert.assertTrue(aObject.equals(bObject) && bObject.equals(aObject)); + // hashCode() + Assert.assertTrue(aObject.hashCode() == bObject.hashCode()); + // non-equal objects are not equals() and have different hashCode() + Assert.assertFalse(aObject.equals(dObject)); + Assert.assertFalse(aObject.hashCode() == dObject.hashCode()); + } } diff --git a/eclipse/src/test/java/org/baeldung/equalshashcode/entities/SquareClassTest.java b/eclipse/src/test/java/org/baeldung/equalshashcode/entities/SquareClassTest.java index 1290f57c6d..53ca199405 100644 --- a/eclipse/src/test/java/org/baeldung/equalshashcode/entities/SquareClassTest.java +++ b/eclipse/src/test/java/org/baeldung/equalshashcode/entities/SquareClassTest.java @@ -7,26 +7,21 @@ import org.junit.Test; public class SquareClassTest { - @Test - public void testEqualsAndHashcodes() { - - Square aObject = new Square(10, Color.BLUE); - Square bObject = new Square(10, Color.BLUE); - Square cObject = new Square(10, Color.BLUE); - - Square dObject = new Square(20, Color.BLUE); - - // equals() - Assert.assertTrue(aObject.equals(aObject)); - Assert.assertTrue(aObject.equals(bObject) && bObject.equals(aObject)); - Assert.assertTrue(aObject.equals(bObject)); - Assert.assertTrue(bObject.equals(cObject)); - Assert.assertTrue(aObject.equals(cObject)); - // hashCode() - Assert.assertTrue(aObject.hashCode() == bObject.hashCode()); - // non-equal objects are not equals() and have different hashCode() - Assert.assertFalse(aObject.equals(dObject)); - Assert.assertFalse(aObject.hashCode() == dObject.hashCode()); - } + @Test + public void testEqualsAndHashcodes() { + + Square aObject = new Square(10, Color.BLUE); + Square bObject = new Square(10, Color.BLUE); + + Square dObject = new Square(20, Color.BLUE); + + // equals() + Assert.assertTrue(aObject.equals(bObject) && bObject.equals(aObject)); + // hashCode() + Assert.assertTrue(aObject.hashCode() == bObject.hashCode()); + // non-equal objects are not equals() and have different hashCode() + Assert.assertFalse(aObject.equals(dObject)); + Assert.assertFalse(aObject.hashCode() == dObject.hashCode()); + } }