Ejemplo n.º 1
0
        public void Add(T item, AddAlignment align)
        {
            IComparer <T> thisComparer = comparer;
            int           index        = BinarySearch(backingList, item, thisComparer);

            if (index < 0)
            {
                backingList.Insert(-index - 1, item);
                return;
            }
            switch (align)
            {
            case AddAlignment.Anywhere:
                break;

            case AddAlignment.Start:
                while (index > 0 && thisComparer.Compare(item, backingList[index - 1]) == 0)
                {
                    index--;
                }
                break;

            case AddAlignment.End:
                int count = backingList.Count;
                index++;
                while (index < count && thisComparer.Compare(item, backingList[index]) == 0)
                {
                    index++;
                }
                break;
            }
            backingList.Insert(index, item);
            return;
        }
Ejemplo n.º 2
0
 public SortedDuplicableList(IComparer <T> comparer, AddAlignment defaultAlignment = AddAlignment.Anywhere)
 {
     if (comparer == null)
     {
         throw new ArgumentNullException("comparer");
     }
     this.comparer    = comparer;
     DefaultAlignment = defaultAlignment;
 }