getGrouping method
Grouping<TKey, TValue>
getGrouping
(- TKey key,
- bool shouldCreate
)
Implementation
Grouping<TKey, TValue> getGrouping(TKey key, bool shouldCreate) {
var hash = _internalGetHash(key);
for (var g = groupings[hash % groupings.length];
g != null;
g = g.hashNext) {
if (g.hashCode == hash && comparer.compare(g.key, key)) return g;
}
if (shouldCreate) {
if (_count == groupings.length) resizeBuffer();
final index = hash % groupings.length;
final g = Grouping<TKey, TValue>();
g.key = key;
g.hash = hash;
g.elements = [];
g.hashNext = groupings[index];
groupings[index] = g;
if (lastGrouping == null) {
g.next = g;
} else {
g.next = lastGrouping.next;
lastGrouping.next = g;
}
lastGrouping = g;
_count++;
return g;
}
return null;
}