Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Side by Side Diff: corelib/src/implementation/hash_map_set.dart

Issue 10832060: Add reduce to Collection. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Use Dynamic as type. Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « corelib/src/implementation/collections.dart ('k') | runtime/lib/array.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 // Hash map implementation with open addressing and quadratic probing. 5 // Hash map implementation with open addressing and quadratic probing.
6 class HashMapImplementation<K extends Hashable, V> implements HashMap<K, V> { 6 class HashMapImplementation<K extends Hashable, V> implements HashMap<K, V> {
7 7
8 // The [_keys] list contains the keys inserted in the map. 8 // The [_keys] list contains the keys inserted in the map.
9 // The [_keys] list must be a raw list because it 9 // The [_keys] list must be a raw list because it
10 // will contain both elements of type K, and the [_DELETED_KEY] of type 10 // will contain both elements of type K, and the [_DELETED_KEY] of type
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 } 343 }
344 344
345 Set map(f(E element)) { 345 Set map(f(E element)) {
346 Set result = new Set(); 346 Set result = new Set();
347 _backingMap.forEach(void _(E key, E value) { 347 _backingMap.forEach(void _(E key, E value) {
348 result.add(f(key)); 348 result.add(f(key));
349 }); 349 });
350 return result; 350 return result;
351 } 351 }
352 352
353 Dynamic reduce(Dynamic initialValue,
354 Dynamic combine(Dynamic previousValue, E element)) {
355 return Collections.reduce(this, initialValue, combine);
356 }
357
353 Set<E> filter(bool f(E element)) { 358 Set<E> filter(bool f(E element)) {
354 Set<E> result = new Set<E>(); 359 Set<E> result = new Set<E>();
355 _backingMap.forEach(void _(E key, E value) { 360 _backingMap.forEach(void _(E key, E value) {
356 if (f(key)) result.add(key); 361 if (f(key)) result.add(key);
357 }); 362 });
358 return result; 363 return result;
359 } 364 }
360 365
361 bool every(bool f(E element)) { 366 bool every(bool f(E element)) {
362 Collection<E> keys = _backingMap.getKeys(); 367 Collection<E> keys = _backingMap.getKeys();
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 445
441 /** 446 /**
442 * A singleton sentinel used to represent when a key is deleted from the map. 447 * A singleton sentinel used to represent when a key is deleted from the map.
443 * We can't use [: const Object() :] as a sentinel because it would end up 448 * We can't use [: const Object() :] as a sentinel because it would end up
444 * canonicalized and then we cannot distinguish the deleted key from the 449 * canonicalized and then we cannot distinguish the deleted key from the
445 * canonicalized [: Object() :]. 450 * canonicalized [: Object() :].
446 */ 451 */
447 class _DeletedKeySentinel { 452 class _DeletedKeySentinel {
448 const _DeletedKeySentinel(); 453 const _DeletedKeySentinel();
449 } 454 }
OLDNEW
« no previous file with comments | « corelib/src/implementation/collections.dart ('k') | runtime/lib/array.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698