1 // Example 5.3 joi/examples/EqualsDemo.java 2 // 3 // 4 // Copyright 2003 Bill Campbell and Ethan Bolker 5 6 // A class illustrating == and equals(). 7 // 8 // %> java EqualsDemo 9 // Different objects, same field: 10 // e1 == e1LookAlike -> false 11 // e1.equals( e1LookAlike ) -> true 12 // Same object: 13 // e1 == e1Too -> true 14 // 15 // Different ArrayLists with equal (but not ==) elements: 16 // alist0 == alist1 -> false 17 // alist0.equals(alist1) -> true 18 // 19 // Different TreeMaps with equal keys 20 // mapping to equal (but !=) values: 21 // tmap0 == tmap1 -> false 22 // tmap0.equals(tmap1) -> true 23 // 24 // tmap0.toString() -> {sillykey = EqualsDemo value 1} 25 // tmap1.toString() -> {sillykey = EqualsDemo value 1} 26 // Are these Strings == ? false 27 // Are these Strings equal ? true 28 29 import java.util.ArrayList; 30 import java.util.TreeMap; 31 32 public class EqualsDemo 33 { 34 // Properties of an EqualsDemo object. 35 // 36 // Override equals: two of these objects are equal if 37 // their integer field has the same (i.e. ==) value. 38 // 39 // When you override equals it's customary to override 40 // toString too, so that equal objects return the equal 41 // Strings, so we do. 42 43 private int field; 44 45 public EqualsDemo( int field ) 46 { 47 this.field = field; 48 } 49 50 public boolean equals( Object other ) 51 { 52 return (other instanceof EqualsDemo) 53 && (this.field == ((EqualsDemo)other).field); 54 } 55 56 public String toString() 57 { 58 return " EqualsDemo value " + field; 59 } 60 61 public static void main( String[] args ) 62 { 63 Terminal t = new Terminal(); 64 65 // EqualsDemo object == vs equals() 66 EqualsDemo e1 = new EqualsDemo( 1 ); 67 EqualsDemo e1LookAlike = new EqualsDemo( 1 ); // same field. 68 EqualsDemo e1Too = e1; // same object 69 70 t.println("Different objects, same field:"); 71 t.println("e1 == e1LookAlike -> " + (e1 == e1LookAlike)); 72 t.println("e1.equals( e1LookAlike ) -> " + e1.equals( e1LookAlike )); 73 t.println("Same object:"); 74 t.println("e1 == e1Too -> " + (e1 == e1Too)); 75 t.println(); 76 77 // Arrays and Maps 78 ArrayList alist0 = new ArrayList(); 79 ArrayList alist1 = new ArrayList(); 80 81 alist0.add( e1); 82 alist1.add( e1LookAlike ); 83 84 t.println( "Different ArrayLists with equal (but not ==) elements:" ); 85 t.println( "alist0 == alist1 -> " + (alist0 == alist1)); 86 t.println( "alist0.equals(alist1) -> " + alist0.equals(alist1)); 87 t.println(); 88 89 TreeMap tmap0 = new TreeMap(); 90 TreeMap tmap1 = new TreeMap(); 91 92 tmap0.put( "sillykey ", e1 ); 93 tmap1.put( "sillykey ", e1LookAlike ); 94 95 t.println( "Different TreeMaps with equal keys" ); 96 t.println( "mapping to equal (but !=) values:" ); 97 98 t.println( "tmap0 == tmap1 -> " + (tmap0 == tmap1)); 99 t.println( "tmap0.equals(tmap1) -> " + tmap0.equals(tmap1)); 100 t.println(); 101 102 // Test Strings for == and equal 103 String s0 = tmap0.toString(); 104 String s1 = tmap1.toString(); 105 t.println( "tmap0.toString() -> " + s0); 106 t.println( "tmap1.toString() -> " + s1); 107 t.println( "Are these Strings == ? " + (s0 == s1) ); 108 t.println( "Are these Strings equal ? " + (s0.equals(s1)) ); 109 } 110 }