File tree 1 file changed +19
-19
lines changed 1 file changed +19
-19
lines changed Original file line number Diff line number Diff line change @@ -26,33 +26,33 @@ THE SOFTWARE.
26
26
Hashtable = (
27
27
28
28
| table count |
29
-
29
+
30
30
"Testing"
31
31
containsKey: key = ( | idx e |
32
32
idx := self indexForKey: key.
33
33
e := table at: idx.
34
34
e isNil ifFalse: [ e keys do: [ :k | k = key ifTrue: [ ^true ] ] ].
35
35
^false.
36
36
)
37
-
38
- containsValue: val = (
39
- table do: [ :ent |
40
- ent isNil ifFalse: [
37
+
38
+ containsValue: val = (
39
+ table do: [ :ent |
40
+ ent isNil ifFalse: [
41
41
ent values do: [ :v | v = val ifTrue: [ ^true ] ] ] ].
42
42
^false.
43
43
)
44
-
44
+
45
45
isEmpty = ( ^count = 0 )
46
46
size = ( ^count )
47
-
47
+
48
48
"Accessing"
49
49
get: key = ( | idx e |
50
50
idx := self indexForKey: key.
51
51
e := table at: idx.
52
52
e isNil ifTrue: [ ^nil ].
53
53
^e getValue: key.
54
54
)
55
-
55
+
56
56
at: key put: value = ( | idx |
57
57
idx := self indexForKey: key.
58
58
(table at: idx) isNil
@@ -65,38 +65,38 @@ Hashtable = (
65
65
ifTrue: [ count := count + 1 ] ].
66
66
"TODO: enlarge table, rehash if too large"
67
67
)
68
-
68
+
69
69
"TODO: some way to delete keys'd be nice..."
70
-
70
+
71
71
"Enumerate"
72
72
keys = ( | vec |
73
73
vec := Vector new.
74
- table do: [ :ent |
74
+ table do: [ :ent |
75
75
ent isNil ifFalse: [ ent keys do: [ :k | vec append: k ] ] ].
76
76
^vec.
77
77
)
78
-
78
+
79
79
values = ( | vec |
80
80
vec := Vector new.
81
- table do: [ :ent |
81
+ table do: [ :ent |
82
82
ent isNil ifFalse: [ ent values do: [ :v | vec append: v ] ] ].
83
83
^vec.
84
84
)
85
-
85
+
86
86
"Clearing"
87
- clear = ( table := Array new: 11.
87
+ clear = ( table := Array new: 11.
88
88
count := 0 )
89
-
89
+
90
90
"Private"
91
91
indexForKey: aKey = ( ^(aKey hashcode % table length) abs + 1 )
92
-
92
+
93
93
----------------
94
-
94
+
95
95
"Allocation"
96
96
new = ( | ht |
97
97
ht := super new.
98
98
ht clear.
99
99
^ht.
100
100
)
101
-
101
+
102
102
)
You can’t perform that action at this time.
0 commit comments