diff method

(List<T>, List<T>, List<T>) diff(
  1. Iterable<T> other
)

Returns (added, removed, unchanged) relative to other. Uses Object.==.

Implementation

(List<T> added, List<T> removed, List<T> unchanged) diff(Iterable<T> other) {
  final Set<T> thisSet = toSet();
  final Set<T> otherSet = other.toSet();
  final List<T> added = otherSet.where((T x) => !thisSet.contains(x)).toList();
  final List<T> removed = thisSet.where((T x) => !otherSet.contains(x)).toList();
  final List<T> unchanged = thisSet.where((T x) => otherSet.contains(x)).toList();
  return (added, removed, unchanged);
}