Tag: sortedset

c#SortedSet如何获取元素

我对此很陌生,请原谅我在这里的无聊。 我正在尝试编辑ac#sortedset中的项目,如果我发现该项目存在。 所以我可以使用list.contains(value)并发现该值确实存在于列表中。 但是如何从列表中获取该项目。 这就是我所拥有的。 当我的列表大小变得非常大时,这变得非常慢,所以我猜测必须有比这更好的方法。 if (list.Contains(p)) { Person exists = list.First(person => person.Name.Equals(line[0])); // do something here to exists } else { // just add the person to the list }

SortedSet 。包含()如何实现自己的比较?

我想检查SortedSet是否存在具有给定值的Object,但我不明白自定义比较在这里是如何工作的。 在List.Exists()我可以只使用lambda,但我不能那样做,我不会得到整个接口的东西,而msdn说我需要覆盖int返回函数。 public class Node { public int X, Y; public int rand; public Node(int x, int y, int r) { X = x; Y = y; rand = r; } } class Program { static void Main(string[] args) { SortedSet mySet = new SortedSet(); mySet.Add(new Node(1, 2, 90)); Node myNode = new Node(1, 2, […]

C#SortedSet 和相等

我对SortedSet的行为有点疑惑,请看下面的例子: public class Blah { public double Value { get; private set; } public Blah(double value) { Value = value; } } public class BlahComparer : Comparer { public override int Compare(Blah x, Blah y) { return Comparer.Default.Compare(x.Value, y.Value); } } public static void main() { var blahs = new List {new Blah(1), new Blah(2), […]

C#最快交集的2组排序数字

我正在计算我的应用程序的时间关键部分中的两组排序数字的交集。 这个计算是整个应用程序的最大瓶颈,所以我需要加快速度。 我尝试过一些简单的选项,目前我正在使用它: foreach (var index in firstSet) { if (secondSet.BinarySearch(index) < 0) continue; //do stuff } firstSet和secondSet都是List类型。 我也尝试过使用LINQ: var intersection = firstSet.Where(t => secondSet.BinarySearch(t) >= 0).ToList(); 然后循环通过intersection 。 但是,由于这两个集合都已排序,我觉得有更好的方法。 请注意,我无法从集中删除项目以使其变小。 两套通常每件约50件。 请帮助我们,因为我没有太多时间来完成这件事。 谢谢。 注意:我这样做大约530万次。 所以每微秒都很重要。