1+ import java .util .List ;
2+ import java .util .ArrayList ;
3+ import java .util .Map ;
4+ import java .util .HashMap ;
5+
6+ public class CountedString {
7+ private static List <String > created = new ArrayList <String >();
8+ private String string ;
9+ private int id = 0 ;
10+ private char aChar ;
11+
12+ public CountedString (String string , char aChar ) {
13+ this .string = string ;
14+ this .aChar = aChar ;
15+ created .add (string + aChar );
16+ for (String createdString : created ) {
17+ if (createdString .equals (string + aChar )) {
18+ id ++;
19+ }
20+ }
21+ }
22+
23+ public String toString () {
24+ return "String: " + string + " id: " + id + " char: " + aChar + " hashCode(): " + hashCode ();
25+ }
26+
27+ public int hashCode () {
28+ int result = 17 ;
29+ result = 37 * result + string .hashCode ();
30+ result = 37 * result + id ;
31+ result = 37 * result + (int ) aChar ;
32+ return result ;
33+ }
34+
35+ public boolean equals (Object object ) {
36+ return object instanceof CountedString &&
37+ string .equals (((CountedString ) object ).string ) &&
38+ id == ((CountedString ) object ).id &&
39+ aChar == ((CountedString ) object ).aChar ;
40+ }
41+
42+ public static void main (String [] args ) {
43+ Map <CountedString , Integer > map = new HashMap <CountedString , Integer >();
44+ CountedString [] countedStrings = new CountedString [5 ];
45+ for (int i = 0 ; i < countedStrings .length ; ++i ) {
46+ countedStrings [i ] = new CountedString ("hi" , (char ) ('a' + i ));
47+ map .put (countedStrings [i ], i );
48+ }
49+ Util .println (map );
50+ for (CountedString countedString : countedStrings ) {
51+ Util .println ("Looking up " + countedString );
52+ Util .println (map .get (countedString ));
53+ }
54+ }
55+ }
0 commit comments