OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of dart.collection; | 5 part of dart.collection; |
6 | 6 |
7 /** | 7 /** |
8 * Base class for implementing a [Map]. | 8 * Base class for implementing a [Map]. |
9 * | 9 * |
10 * This class has a basic implementation of all but five of the members of | 10 * This class has a basic implementation of all but five of the members of |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 action(key, this[key]); | 53 action(key, this[key]); |
54 } | 54 } |
55 } | 55 } |
56 | 56 |
57 void addAll(Map<K, V> other) { | 57 void addAll(Map<K, V> other) { |
58 for (K key in other.keys) { | 58 for (K key in other.keys) { |
59 this[key] = other[key]; | 59 this[key] = other[key]; |
60 } | 60 } |
61 } | 61 } |
62 | 62 |
63 bool containsValue(V value) { | 63 bool containsValue(Object value) { |
64 for (K key in keys) { | 64 for (K key in keys) { |
65 if (this[key] == value) return true; | 65 if (this[key] == value) return true; |
66 } | 66 } |
67 return false; | 67 return false; |
68 } | 68 } |
69 | 69 |
70 V putIfAbsent(K key, V ifAbsent()) { | 70 V putIfAbsent(K key, V ifAbsent()) { |
71 if (keys.contains(key)) { | 71 if (keys.contains(key)) { |
72 return this[key]; | 72 return this[key]; |
73 } | 73 } |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 class UnmodifiableMapView<K, V> = | 211 class UnmodifiableMapView<K, V> = |
212 MapView<K, V> with _UnmodifiableMapMixin<K, V>; | 212 MapView<K, V> with _UnmodifiableMapMixin<K, V>; |
213 | 213 |
214 /** | 214 /** |
215 * Helper class which implements complex [Map] operations | 215 * Helper class which implements complex [Map] operations |
216 * in term of basic ones ([Map.keys], [Map.operator []], | 216 * in term of basic ones ([Map.keys], [Map.operator []], |
217 * [Map.operator []=] and [Map.remove].) Not all methods are | 217 * [Map.operator []=] and [Map.remove].) Not all methods are |
218 * necessary to implement each particular operation. | 218 * necessary to implement each particular operation. |
219 */ | 219 */ |
220 class Maps { | 220 class Maps { |
221 static bool containsValue(Map map, value) { | 221 static bool containsValue(Map map, Object value) { |
222 for (final v in map.values) { | 222 for (final v in map.values) { |
223 if (value == v) { | 223 if (v == value) { |
224 return true; | 224 return true; |
225 } | 225 } |
226 } | 226 } |
227 return false; | 227 return false; |
228 } | 228 } |
229 | 229 |
230 static bool containsKey(Map map, key) { | 230 static bool containsKey(Map map, Object key) { |
231 for (final k in map.keys) { | 231 for (final k in map.keys) { |
232 if (key == k) { | 232 if (k == key) { |
233 return true; | 233 return true; |
234 } | 234 } |
235 } | 235 } |
236 return false; | 236 return false; |
237 } | 237 } |
238 | 238 |
239 static putIfAbsent(Map map, key, ifAbsent()) { | 239 static putIfAbsent(Map map, key, ifAbsent()) { |
240 if (map.containsKey(key)) { | 240 if (map.containsKey(key)) { |
241 return map[key]; | 241 return map[key]; |
242 } | 242 } |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 map[keyIterator.current] = valueIterator.current; | 344 map[keyIterator.current] = valueIterator.current; |
345 hasNextKey = keyIterator.moveNext(); | 345 hasNextKey = keyIterator.moveNext(); |
346 hasNextValue = valueIterator.moveNext(); | 346 hasNextValue = valueIterator.moveNext(); |
347 } | 347 } |
348 | 348 |
349 if (hasNextKey || hasNextValue) { | 349 if (hasNextKey || hasNextValue) { |
350 throw new ArgumentError("Iterables do not have same length."); | 350 throw new ArgumentError("Iterables do not have same length."); |
351 } | 351 } |
352 } | 352 } |
353 } | 353 } |
OLD | NEW |