BAEL-2388: moved examples java-collections-maps -> core-java-long. Fixing String comparisons
This commit is contained in:
		
							parent
							
								
									456f4b0f5a
								
							
						
					
					
						commit
						a67c10eec7
					
				| @ -66,6 +66,12 @@ | ||||
|             <artifactId>mail</artifactId> | ||||
|             <version>${javax.mail.version}</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>nl.jqno.equalsverifier</groupId> | ||||
|             <artifactId>equalsverifier</artifactId> | ||||
|             <version>${equalsverifier.version}</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|     </dependencies> | ||||
| 
 | ||||
|     <build> | ||||
| @ -424,6 +430,7 @@ | ||||
|         <maven-shade-plugin.version>3.1.1</maven-shade-plugin.version> | ||||
|         <spring-boot-maven-plugin.version>2.0.3.RELEASE</spring-boot-maven-plugin.version> | ||||
|         <exec-maven-plugin.version>1.6.0</exec-maven-plugin.version> | ||||
|         <equalsverifier.version>3.0.3</equalsverifier.version> | ||||
|     </properties> | ||||
| 
 | ||||
| </project> | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.map.hashcode; | ||||
| package com.baeldung.equalshashcode; | ||||
| 
 | ||||
| class Money { | ||||
| 
 | ||||
| @ -17,15 +17,19 @@ class Money { | ||||
|         if (!(o instanceof Money)) | ||||
|             return false; | ||||
|         Money other = (Money)o; | ||||
|         boolean currencyCodeEquals = (this.currencyCode == null && other.currencyCode == null) | ||||
|           || (this.currencyCode != null && this.currencyCode.equals(other.currencyCode)); | ||||
|         return this.amount == other.amount | ||||
|           && this.currencyCode == other.currencyCode; | ||||
|           && currencyCodeEquals; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public int hashCode() { | ||||
|         int result = 17; | ||||
|         result = 31 * result + amount; | ||||
|         if (currencyCode != null) { | ||||
|             result = 31 * result + currencyCode.hashCode(); | ||||
|         } | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.map.hashcode; | ||||
| package com.baeldung.equalshashcode; | ||||
| 
 | ||||
| class Team { | ||||
| 
 | ||||
| @ -0,0 +1,38 @@ | ||||
| package com.baeldung.equalshashcode; | ||||
| 
 | ||||
| class Voucher { | ||||
| 
 | ||||
|     private Money value; | ||||
|     private String store; | ||||
| 
 | ||||
|     Voucher(int amount, String currencyCode, String store) { | ||||
|         this.value = new Money(amount, currencyCode); | ||||
|         this.store = store; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean equals(Object o) { | ||||
|         if (o == this) | ||||
|             return true; | ||||
|         if (!(o instanceof Voucher)) | ||||
|             return false; | ||||
|         Voucher other = (Voucher)o; | ||||
|         boolean valueEquals = (this.value == null && other.value == null) | ||||
|           || (this.value != null && this.value.equals(other.value)); | ||||
|         boolean storeEquals = (this.store == null && other.store == null) | ||||
|           || (this.store != null && this.store.equals(other.store)); | ||||
|         return valueEquals && storeEquals; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public int hashCode() { | ||||
|         int result = 17; | ||||
|         if (this.value != null) { | ||||
|             result = 31 * result + value.hashCode(); | ||||
|         } | ||||
|         if (this.store != null) { | ||||
|             result = 31 * result + store.hashCode(); | ||||
|         } | ||||
|         return result; | ||||
|     } | ||||
| } | ||||
| @ -1,5 +1,11 @@ | ||||
| package com.baeldung.map.hashcode; | ||||
| package com.baeldung.equalshashcode; | ||||
| 
 | ||||
| /* (non-Javadoc) | ||||
| * This class overrides equals, but it doesn't override hashCode. | ||||
| * | ||||
| * To see which problems this leads to: | ||||
| * TeamUnitTest.givenMapKeyWithoutHashCode_whenSearched_thenReturnsWrongValue | ||||
| */ | ||||
| class WrongTeam { | ||||
| 
 | ||||
|     String city; | ||||
| @ -0,0 +1,47 @@ | ||||
| package com.baeldung.equalshashcode; | ||||
| 
 | ||||
| /* (non-Javadoc) | ||||
| * This class extends the Money class that has overridden the equals method and once again overrides the equals method. | ||||
| * | ||||
| * To see which problems this leads to: | ||||
| * MoneyUnitTest.givenMoneyAndVoucherInstances_whenEquals_thenReturnValuesArentSymmetric | ||||
| */ | ||||
| class WrongVoucher extends Money { | ||||
| 
 | ||||
|     private String store; | ||||
| 
 | ||||
|     WrongVoucher(int amount, String currencyCode, String store) { | ||||
|         super(amount, currencyCode); | ||||
| 
 | ||||
|         this.store = store; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean equals(Object o) { | ||||
|         if (o == this) | ||||
|             return true; | ||||
|         if (!(o instanceof WrongVoucher)) | ||||
|             return false; | ||||
|         WrongVoucher other = (WrongVoucher)o; | ||||
|         boolean currencyCodeEquals = (this.currencyCode == null && other.currencyCode == null) | ||||
|           || (this.currencyCode != null && this.currencyCode.equals(other.currencyCode)); | ||||
|         boolean storeEquals = (this.store == null && other.store == null) | ||||
|           || (this.store != null && this.store.equals(other.store)); | ||||
|         return this.amount == other.amount | ||||
|           && currencyCodeEquals | ||||
|           && storeEquals; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public int hashCode() { | ||||
|         int result = 17; | ||||
|         result = 31 * result + amount; | ||||
|         if (this.currencyCode != null) { | ||||
|             result = 31 * result + currencyCode.hashCode(); | ||||
|         } | ||||
|         if (this.store != null) { | ||||
|             result = 31 * result + store.hashCode(); | ||||
|         } | ||||
|         return result; | ||||
|     } | ||||
| } | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.map.hashcode; | ||||
| package com.baeldung.equalshashcode; | ||||
| 
 | ||||
| import static org.junit.Assert.assertTrue; | ||||
| import static org.junit.Assert.assertFalse; | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.map.hashcode; | ||||
| package com.baeldung.equalshashcode; | ||||
| 
 | ||||
| import static org.junit.Assert.assertEquals; | ||||
| import static org.junit.Assert.assertFalse; | ||||
| @ -41,12 +41,6 @@ | ||||
|             <artifactId>streamex</artifactId> | ||||
|             <version>0.6.5</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>nl.jqno.equalsverifier</groupId> | ||||
|             <artifactId>equalsverifier</artifactId> | ||||
|             <version>3.0.3</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|     </dependencies> | ||||
| 
 | ||||
|     <properties> | ||||
|  | ||||
| @ -1,31 +0,0 @@ | ||||
| package com.baeldung.map.hashcode; | ||||
| 
 | ||||
| class Voucher { | ||||
| 
 | ||||
|     private Money value; | ||||
|     private String store; | ||||
| 
 | ||||
|     Voucher(int amount, String currencyCode, String store) { | ||||
|         this.value = new Money(amount, currencyCode); | ||||
|         this.store = store; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean equals(Object o) { | ||||
|         if (o == this) | ||||
|             return true; | ||||
|         if (!(o instanceof Voucher)) | ||||
|             return false; | ||||
|         Voucher other = (Voucher)o; | ||||
|         return this.value == other.value | ||||
|           && this.store == other.store; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public int hashCode() { | ||||
|         int result = 17; | ||||
|         result = 31 * result + value.hashCode(); | ||||
|         result = 31 * result + store.hashCode(); | ||||
|         return result; | ||||
|     } | ||||
| } | ||||
| @ -1,33 +0,0 @@ | ||||
| package com.baeldung.map.hashcode; | ||||
| 
 | ||||
| class WrongVoucher extends Money { | ||||
| 
 | ||||
|     private String store; | ||||
| 
 | ||||
|     WrongVoucher(int amount, String currencyCode, String store) { | ||||
|         super(amount, currencyCode); | ||||
| 
 | ||||
|         this.store = store; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean equals(Object o) { | ||||
|         if (o == this) | ||||
|             return true; | ||||
|         if (!(o instanceof WrongVoucher)) | ||||
|             return false; | ||||
|         WrongVoucher other = (WrongVoucher)o; | ||||
|         return this.amount == other.amount | ||||
|           && this.currencyCode == other.currencyCode | ||||
|           && this.store == other.store; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public int hashCode() { | ||||
|         int result = 17; | ||||
|         result = 31 * result + amount; | ||||
|         result = 31 * result + currencyCode.hashCode(); | ||||
|         result = 31 * result + store.hashCode(); | ||||
|         return result; | ||||
|     } | ||||
| } | ||||
| @ -1 +0,0 @@ | ||||
|  Non-nullity: hashCode throws NullPointerException on field city. | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user