OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 /** Common parts of [HashSet] and [LinkedHashSet] implementations. */ | 7 /** Common parts of [HashSet] and [LinkedHashSet] implementations. */ |
8 abstract class _HashSetBase<E> extends SetBase<E> { | 8 abstract class _HashSetBase<E> extends SetBase<E> { |
9 | |
10 // The following two methods override the ones in SetBase. | 9 // The following two methods override the ones in SetBase. |
11 // It's possible to be more efficient if we have a way to create an empty | 10 // It's possible to be more efficient if we have a way to create an empty |
12 // set of the correct type. | 11 // set of the correct type. |
13 | 12 |
14 Set<E> difference(Set<Object> other) { | 13 Set<E> difference(Set<Object> other) { |
15 Set<E> result = _newSet(); | 14 Set<E> result = _newSet(); |
16 for (var element in this) { | 15 for (var element in this) { |
17 if (!other.contains(element)) result.add(element); | 16 if (!other.contains(element)) result.add(element); |
18 } | 17 } |
19 return result; | 18 return result; |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 * If neither `equals`, `hashCode`, nor `isValidKey` is provided, | 88 * If neither `equals`, `hashCode`, nor `isValidKey` is provided, |
90 * the default `isValidKey` instead accepts all values. | 89 * the default `isValidKey` instead accepts all values. |
91 * The default equality and hashcode operations are assumed to work on all | 90 * The default equality and hashcode operations are assumed to work on all |
92 * objects. | 91 * objects. |
93 * | 92 * |
94 * Likewise, if `equals` is [identical], `hashCode` is [identityHashCode] | 93 * Likewise, if `equals` is [identical], `hashCode` is [identityHashCode] |
95 * and `isValidKey` is omitted, the resulting set is identity based, | 94 * and `isValidKey` is omitted, the resulting set is identity based, |
96 * and the `isValidKey` defaults to accepting all keys. | 95 * and the `isValidKey` defaults to accepting all keys. |
97 * Such a map can be created directly using [HashSet.identity]. | 96 * Such a map can be created directly using [HashSet.identity]. |
98 */ | 97 */ |
99 external factory HashSet({bool equals(E e1, E e2), | 98 external factory HashSet( |
100 int hashCode(E e), | 99 {bool equals(E e1, E e2), |
101 bool isValidKey(potentialKey)}); | 100 int hashCode(E e), |
| 101 bool isValidKey(potentialKey)}); |
102 | 102 |
103 /** | 103 /** |
104 * Creates an unordered identity-based set. | 104 * Creates an unordered identity-based set. |
105 * | 105 * |
106 * Effectively a shorthand for: | 106 * Effectively a shorthand for: |
107 * | 107 * |
108 * new HashSet<E>(equals: identical, | 108 * new HashSet<E>(equals: identical, |
109 * hashCode: identityHashCode) | 109 * hashCode: identityHashCode) |
110 */ | 110 */ |
111 external factory HashSet.identity(); | 111 external factory HashSet.identity(); |
(...skipping 24 matching lines...) Expand all Loading... |
136 } | 136 } |
137 | 137 |
138 /** | 138 /** |
139 * Provides an iterator that iterates over the elements of this set. | 139 * Provides an iterator that iterates over the elements of this set. |
140 * | 140 * |
141 * The order of iteration is unspecified, | 141 * The order of iteration is unspecified, |
142 * but consistent between changes to the set. | 142 * but consistent between changes to the set. |
143 */ | 143 */ |
144 Iterator<E> get iterator; | 144 Iterator<E> get iterator; |
145 } | 145 } |
OLD | NEW |