public List <BinarySearchMultiSet <int> > GetUsersGroups() { ReadData(); var result = new List <BinarySearchMultiSet <int> >(); int processed = 0; foreach (var element in _list) { if (++processed % 1000 == 0) { Console.Write(" \r"); Console.Write("Processed: {0} %\r", 100.0f * processed / _list.Count); } BinarySearchMultiSet <int> destination = null; foreach (var group in result) { foreach (var value in element.Item2) { if (group.Contains(value)) { destination = group; break; } } } if (destination == null) { destination = new BinarySearchMultiSet <int>(Comparer <int> .Default); result.Add(destination); } var toAdd = new List <int> { element.Item1 }; toAdd.AddRange(element.Item2.Where(value => !destination.Contains(value))); foreach (var value in toAdd) { destination.Add(value); } } return(result); }
public UsersGroup(BinarySearchSet <int> users, BinarySearchMultiSet <Tuple <int, float> > urlsStats) { this.users = users; this.urlsStats = urlsStats; }