如何使有序列表反向排序?我必须自定义 IComparer 吗?
在sortedlist队列中,queue.value[0]给出了对应的min key的值。如果我想让它给出 max 键的值怎么办?
我必须重写 icomparer 吗?
In a sortedlist queue, queue.value[0] gives the corresponding value of a min key. what if i would like to make that it gives the value of a max key?
Do i have to rewrite the icomparer?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
是的,您必须重写
字符串作为键的比较器示例:(只需将
x.CompareTo(y)
与y.CompareTo(x)
交换)并调用:
Yes you have to rewrite the comparer
example for string as key: (just exchanged
x.CompareTo(y)
withy.CompareTo(x)
)and the call:
下面是链接,指向实现
ReversibleSortedList.这允许更改排序方向。
如果您总是想要反向排序行为而无法按需更改它,我会尝试 接受 IComparer。
Here's a link to an article that implements a
ReversibleSortedList
. This allows for changing the sort direction.In case you always want reversed sort behavior without the ability to change it on demand, I'd try the constructor that accepts an IComparer.
在一些简单的情况下只需使用 Array.Reverse() 即可。
* 输出*
Just use
Array.Reverse()
in some simple cases.* Output *
您可以反转任何现有的 IComparers。类似于:
并使用常规比较器。例如
You could just invert any existing IComparers. Something like:
And use your regular comparer. For e.g.