group<A> function
- Eq<
A> eq
Groups consecutive duplicate items in an ImmutableList using the eq
comparator.
Example:
final list = ImmutableList<int>([1, 2, 2, 3, 3]);
final groups = group(Eq.fromDefault<int>())(list);
print(groups.map((group) => group.items));
// Outputs: [(1), (2, 2), (3, 3)]
Implementation
List<ImmutableList<A>> Function(ImmutableList<A>) group<A>(Eq<A> eq) =>
(ImmutableList<A> list) {
List<ImmutableList<A>> result = [];
if (list._items.isEmpty) return result;
List<A> currentGroup = [list._items.first];
list._items.skip(1).forEach((item) {
if (eq.equals(item, currentGroup.last)) {
currentGroup.add(item);
} else {
result.add(ImmutableList(currentGroup));
currentGroup = [item];
}
});
result.add(ImmutableList(currentGroup));
return result;
};