Dart DocumentationbotGrouping<K, V>

Grouping<K extends Hashable, V> class

class Grouping<K extends Hashable, V> {
  final HashMap<K, List<V>> _values = new HashMap<K, List<V>>();

  Grouping(Iterable<V> source, [Func1<V, K> keyFunc = null]) {
    if(keyFunc == null) {
      keyFunc = (v) => v;
    }

    for (final V value in source) {
      final K key = keyFunc(value);
      final values = _values.putIfAbsent(key, () => new List<V>());
      values.add(value);
    }
  }

  /**
   * Returns whether this map contains the given [key].
   */
  bool containsKey(K key) => _values.containsKey(key);

  /**
   * Returns the value for the given [key] or null if [key] is not
   * in the map. Because null values are supported, one should either
   * use containsKey to distinguish between an absent key and a null
   * value, or use the [putIfAbsent] method.
   */
  List<V> operator [](K key) => _values[key];

  /**
   * Applies [f] to each {key, value} pair of the map.
   */
  void forEach(void f(K key, List<V> value)) => _values.forEach(f);

  /**
   * Returns a collection containing all the keys in the map.
   */
  Collection<K> getKeys() => _values.getKeys();

  Enumerable<V> getValues() => $(_values.getValues()).selectMany((a) => a);

  /**
   * The number of {key, value} pairs in the map.
   */
  int get length => _values.length;

  /**
   * Returns true if there is no {key, value} pair in the map.
   */
  bool get isEmpty => _values.isEmpty();

  String toString() => _values.toString();
}

Constructors

new Grouping(Iterable<V> source, [Func1 keyFunc = null]) #

Grouping(Iterable<V> source, [Func1<V, K> keyFunc = null]) {
  if(keyFunc == null) {
    keyFunc = (v) => v;
  }

  for (final V value in source) {
    final K key = keyFunc(value);
    final values = _values.putIfAbsent(key, () => new List<V>());
    values.add(value);
  }
}

Properties

final bool isEmpty #

Returns true if there is no {key, value} pair in the map.

bool get isEmpty => _values.isEmpty();

final int length #

The number of {key, value} pairs in the map.

int get length => _values.length;

final Type runtimeType #

inherited from Object

A representation of the runtime type of the object.

external Type get runtimeType;

Operators

List<V> operator [](K key) #

Returns the value for the given key or null if key is not in the map. Because null values are supported, one should either use containsKey to distinguish between an absent key and a null value, or use the putIfAbsent method.

List<V> operator [](K key) => _values[key];

bool operator ==(other) #

inherited from Object

The equality operator.

The default behavior for all Objects is to return true if and only if this and other are the same object.

If a subclass overrides the equality operator it should override the hashCode method as well to maintain consistency.

bool operator ==(other) => identical(this, other);

Methods

bool containsKey(K key) #

Returns whether this map contains the given key.

bool containsKey(K key) => _values.containsKey(key);

void forEach(void f(K key, List<V> value)) #

Applies f to each {key, value} pair of the map.

void forEach(void f(K key, List<V> value)) => _values.forEach(f);

Collection<K> getKeys() #

Returns a collection containing all the keys in the map.

Collection<K> getKeys() => _values.getKeys();

Enumerable<V> getValues() #

Enumerable<V> getValues() => $(_values.getValues()).selectMany((a) => a);

new Grouping(Iterable<V> source, [Func1 keyFunc = null]) #

Grouping(Iterable<V> source, [Func1<V, K> keyFunc = null]) {
  if(keyFunc == null) {
    keyFunc = (v) => v;
  }

  for (final V value in source) {
    final K key = keyFunc(value);
    final values = _values.putIfAbsent(key, () => new List<V>());
    values.add(value);
  }
}

int hashCode() #

inherited from Object

Get a hash code for this object.

All objects have hash codes. Hash codes are guaranteed to be the same for objects that are equal when compared using the equality operator ==. Other than that there are no guarantees about the hash codes. They will not be consistent between runs and there are no distribution guarantees.

If a subclass overrides hashCode it should override the equality operator as well to maintain consistency.

external int hashCode();

noSuchMethod(String name, List args) #

inherited from Object

noSuchMethod is invoked when users invoke a non-existant method on an object. The name of the method and the arguments of the invocation are passed to noSuchMethod. If noSuchMethod returns a value, that value becomes the result of the original invocation.

The default behavior of noSuchMethod is to throw a noSuchMethodError.

external Dynamic noSuchMethod(String name, List args);

const Object() #

inherited from Object

Creates a new Object instance.

Object instances have no meaningful state, and are only useful through their identity. An Object instance is equal to itself only.

const Object();

String toString() #

Returns a string representation of this object.

docs inherited from Object
String toString() => _values.toString();