gpt4 book ai didi

c# - 如何在小于线性时间内获得 ImmutableQueue 的大小

转载 作者:行者123 更新时间:2023-11-30 23:02:50 25 4
gpt4 key购买 nike

我有一个不可变队列声明如下:

public ImmutableQueue<JObject> MyImmutableQueue => 
ImmutableQueue.CreateRange<JObject>(myConcurrentQueue);

我想像这样从我的测试类中引用它:

myClass.MyImmutableQueue.Count

但是,我发现 Count 方法不存在。

我检查了 API here并且似乎没有CountSizeLength 等方法。

如果没有这样的方法,我可能会做一个扩展方法来迭代和计算元素,但是效率很低。

那么,是否有一些方法或一些(低于线性时间复杂度)方法来计算 ImmutableQueue 的元素?

最佳答案

没有办法做到这一点,因为 ImmutableQueue 的实现方式需要完全遍历才能对元素进行计数。即使有反射(reflection),你也做不到。

如果你看source code ,你会看到它内部使用了两个ImmutableStackImmutableStack用head和tail表示(其中tail是另一个ImmutableStack)。因此,要计算出元素的数量,您必须计算这些堆栈中的元素数量,并且要做到这一点 - 您必须完全遍历它们。因此,计算 ImmutableQueue 实现的复杂度始终是线性的。

因此,如果您绝对需要它 - 只需使用 IEnumerable.Count() 扩展方法,因为无论如何您都无法做得更好。

关于c# - 如何在小于线性时间内获得 ImmutableQueue 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50269094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com