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