1 package frost.collections
2
3
7 class DefaultHashMap<K:HashKey<K>, V> : Map<K, V> {
8 @private
9 def map:HashMap<K, V>
10
11 @private
12 def default:V
13
14 init(default:V) {
15 map := HashMap<K, V>()
16 self.default := default
17 }
18
19 init(entries:CollectionView<(K, V)>, default:V) {
20 map := HashMap<K, V>(entries)
21 self.default := default
22 }
23
24 @override
25 function [](key:K):V? {
26 return self[key]
27 }
28
29 @priority(2)
30 function [](key:K):V {
31 def result := map[key]
32 if result !== null {
33 return result
34 }
35 return default
36 }
37
38 @override
39 function contains(key:K):Bit {
40 return map.contains(key)
41 }
42
43 @override
44 method []:=(key:K, value:V) {
45 map[key] := value
46 }
47
48 @override
49 method remove(key:K) {
50 map.remove(key)
51 }
52
53 @override
54 method clear() {
55 map.clear()
56 }
57
58 @override
59 function get_entries():Iterator<(K, V)> {
60 return map.entries
61 }
62
63 @override
64 function get_count():Int {
65 return map.count
66 }
67
68 @override
69 method filterInPlace(test:(K, V)=>(Bit)) {
70 map.filterInPlace(test)
71 }
72
73 @override
74 function get_toString():String {
75 return map.toString
76 }
77 }