Chromium Code Reviews| Index: sdk/lib/collection/splay_tree.dart |
| diff --git a/sdk/lib/collection/splay_tree.dart b/sdk/lib/collection/splay_tree.dart |
| index 0edd58deaac79d7094125e24d501aa8475bdc97c..8d05ca36ad6706d7faf03c7c1348d426e43617cf 100644 |
| --- a/sdk/lib/collection/splay_tree.dart |
| +++ b/sdk/lib/collection/splay_tree.dart |
| @@ -271,10 +271,13 @@ class SplayTreeMap<K, V> extends _SplayTree<K> implements Map<K, V> { |
| /** |
| * Creates a [SplayTreeMap] that contains all key value pairs of [other]. |
| */ |
| - factory SplayTreeMap.from(Map<K, V> other, |
| + factory SplayTreeMap.from(Map other, |
| [ int compare(K key1, K key2), |
|
floitsch
2015/01/05 14:45:30
remove space.
Lasse Reichstein Nielsen
2015/01/06 10:14:45
Done.
|
| - bool isValidKey(potentialKey)]) => |
| - new SplayTreeMap(compare, isValidKey)..addAll(other); |
| + bool isValidKey(potentialKey)]) { |
| + SplayTreeMap<K, V> result = new SplayTreeMap<K, V>(); |
| + other.forEach((k, v) { result[k] = v; }); |
| + return result; |
| + } |
| /** |
| * Creates a [SplayTreeMap] where the keys and values are computed from the |
| @@ -688,6 +691,23 @@ class SplayTreeSet<E> extends _SplayTree<E> with IterableMixin<E>, SetMixin<E> { |
| : _comparator = (compare == null) ? Comparable.compare : compare, |
| _validKey = (isValidKey != null) ? isValidKey : ((v) => v is E); |
| + /** |
| + * Creates a [SplayTreeSet] that contains all of [elements]. |
| + * |
| + * The set works as if created by `new SplayTreeSet<E>(compare, isValidKey)`. |
| + * |
| + * All the [elements] should be valid as arguments to the [compare] function. |
| + */ |
| + factory SplayTreeSet.from(Iterable elements, |
| + [int compare(E key1, E key2), |
| + bool isValidKey(potentialKey)]) { |
| + SplayTreeSet<E> result = new SplayTreeSet<E>(compare, isValidKey); |
| + for (final E element in elements) { |
| + result.add(element); |
| + } |
| + return result; |
| + } |
| + |
| int _compare(E e1, E e2) => _comparator(e1, e2); |
| // From Iterable. |