有SortedSet。为了比较,我使用标准方法CompareTo()。
SortedSet<int> set = new SortedSet<int>(Comparer<int>.Create((a, b) => a.CompareTo(b)));
set.Add(2);
set.Add(6);
set.Add(6);
set.Add(7);
set.Add(4);
set.Add(11);
这里set有 5 个值:2, 4, 6, 7, 11. 我需要做什么才能set不仅进入唯一值(在我的例子中,set应该包含2, 4, 6, 6, 7, 11)?
不,根据定义,实现接口的集合不能包含重复元素。使用常规.
ISet<T>List<T>LINQ 的优雅方式:
*请注意,这会在内存中创建一个新列表,这会对大型列表产生性能影响。
使用另一个容器,例如
List<int>,添加元素后,调用Sort.我不知道这样做是否值得,但
SortedSet<int>您可以向其中添加相同的元素。该方法CompareTo()等同于写作:a > b ? 1 : a < b ? -1 : 0。也就是说,如果某个元素已包含在 中set,则不会添加该元素。但是,如果您将条件替换为0,-1则比较器只会将相同的元素放在彼此的前面:这里
set包含2, 4, 6, 6, 7, 11.