.NET 中的反向排序字典

2024-01-08

有什么方法可以在 C# 中向后(反向)迭代 SortedDictionary 吗?

或者有没有办法首先按降序定义 SortedDictionary ?


SortedDictionary 本身不支持向后迭代,但您有多种可能性来实现相同的效果。

  1. Use .Reverse-方法(Linq)。 (这必须预先计算整个字典输出,但这是最简单的解决方案)

    var Rand = new Random();
    
    var Dict = new SortedDictionary<int, string>();
    
    for (int i = 1; i <= 10; ++i) {
        var newItem = Rand.Next(1, 100);
        Dict.Add(newItem, (newItem * newItem).ToString());
    }
    
    foreach (var x in Dict.Reverse()) {
        Console.WriteLine("{0} -> {1}", x.Key, x.Value);
    }
    
  2. 使字典按降序排序。

    class DescendingComparer<T> : IComparer<T> where T : IComparable<T> {
        public int Compare(T x, T y) {
            return y.CompareTo(x);
        }
    }
    
    // ...
    
    var Dict = new SortedDictionary<int, string>(new DescendingComparer<int>());
    
  3. Use SortedList<TKey, TValue>反而。性能不如字典(O(n) 而不是 O(logn)),但您可以像数组一样随机访问元素。当您使用通用 IDictionary-Interface 时,您无需更改其余代码。

编辑::迭代SortedLists

您只需通过索引访问元素即可!

var Rand = new Random();


var Dict = new SortedList<int, string>();

for (int i = 1; i <= 10; ++i) {
    var newItem = Rand.Next(1, 100);
    Dict.Add(newItem, (newItem * newItem).ToString());
}

// Reverse for loop (forr + tab)
for (int i = Dict.Count - 1; i >= 0; --i) {
    Console.WriteLine("{0} -> {1}", Dict.Keys[i], Dict.Values[i]);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 中的反向排序字典 的相关文章

  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l

随机推荐

  • Graphics2D圆桌

    我正在尝试为 RGBike POV 构建一个用户界面 http www instructables com id RGBike POV Open project http www instructables com id RGBike PO
  • capistrano 错误:...../当前:没有这样的文件或目录

    我正在尝试使用 capistrano 进行部署 但是当我执行 cap deploy update 时 它 没有创建 current 文件夹 这是错误 有什么想法吗 executing cd home adamtodd apps homeba
  • jQuery - 选择给定行的第一个单元格?

    我有一张表格 其中一列包含图像 当我单击图像时 想要获取该行中第一列的文本值 我可以用这个得到整行 var a this parents tr text 但是 我无法隔离该行的第一个单元格 我试过了 var a this parents t
  • 如果我显然想访问隐藏的数据构造函数,有哪些可用的解决方案?

    我正在使用一个包 它在方便的 ReaderT monad 中携带东西 他们的 runReaderT unwrapping 函数位于隐藏模块中 我希望能够在任意环境下任意 手动解开它 因此 我对手动执行此操作没有任何疑虑 但是 环境类型有一个
  • 哪些模块随 Perl 一起分发?

    我如何知道哪些模块随 Perl 一起分发 我的第一个猜测是列出的核心模块here http perldoc perl org index modules A html总是包含在内 尽管我找不到明确的说明 但是 我使用了该集合之外的模块 例如
  • Flexbox 似乎忽略了 CSS 的特殊性

    我尝试以与以下相同的方式使用 Flex By DefaultFacebook 的 CSS 布局项目 https github com facebook css layout 在覆盖样式时我遇到了一些麻烦display inline flex
  • 如何避免在每个 swift 文件上导入相同的框架

    有没有办法始终在每个文件上导入一些库 而不将它们放入框架中 例如 不必这样做 MySwiftFile swift import UIKit import Foundation import 我可以做类似的事情 SharedImports s
  • 如何在 BigQuery 中设置项目默认的最大计费字节数?

    在 BigQuery UI 中 如果我单击 显示选项 则会出现一个名为 最大计费字节数 的字段 这是确保您不会因为昂贵的查询而出错的好方法 当您未在该字段中输入值时 它会显示 项目默认值 如何设置该项目默认值 我到处都找不到它 另外 项目默
  • 连接两个表,其中表 A 具有日期值,并且需要在 B 中查找 A 中日期下方的下一个日期

    我得到了这张表 A id date 1 2010 01 13 2 2011 04 19 3 2011 05 07 和这个表 B date value 2009 03 29 0 5 2010 01 30 0 55 2011 08 12 0 6
  • 更新数据库后如何更新redis?

    我将一些数据缓存在redis中 如果存在则从redis中读取数据 否则从数据库中读取数据并将数据写入redis中 我发现更新数据库后更新redis有几种方法 例如 将redis中的key设置为过期 更新数据库后立即更新redis 将数据放入
  • 使用 R 可以显示小数点后有多少个数字?

    我想知道你能打印多远 http www iheartchaos com post 16393143676 fun with math dividing one by 998001 yields a http www iheartchaos
  • JPA 复合键@OneToMany

    我有以下现有的数据库模式 我想使用 Java 和普通 JPA 注释重新创建它 使用 hibernate 作为提供程序 因此 hibernate 特定注释将作为最后的手段 CREATE TABLE users user id NUMBER N
  • 循环遍历目录中的所有文件[重复]

    这个问题在这里已经有答案了 我想编写一个 shell 脚本 它将循环遍历目录中的所有文件并回显 put filename 有人能指出我正确的方向吗 对于文件和目录 不递归 for filename in do echo put filena
  • Xcode 8 / Swift 3:didSelectRowAt 与 didSelectRowAtIndexPath

    在我们的 Swift 3 迁移之后 发生了一些非常奇怪的事情 我们有两个视图控制器 它们都实现UITableViewDelegate并且他们都实现了public func tableView tableView UITableView di
  • 如何升级使用ORM工具构建的数据库架构?

    我正在寻找使用 ORM 工具 例如 JPOX 或 Hibernate 升级数据库架构的通用解决方案 您在项目中是如何做到的 我想到的第一个解决方案是创建自己的数据库升级机制 并使用 SQL 脚本完成所有工作 但在这种情况下 我必须记住每次更
  • 有没有办法从表中的 OLEObject 字段中提取 AutoCAD 绘图和图片?

    仅提供一些背景信息 我是一家公司的机械工程师 这里的前辈在 Access 2003 中创建了一个数据库 该数据库基本上采用 AutoCAD 绘图或图片 OLE 并将其与一堆其他信息一起放入一个精美的框架报告中 我一直在对该数据库进行一些修改
  • 删除或更改 UIWebView 文档显示周围的框架颜色?

    我正在使用一个UIWebView显示嵌入到主视图中的各种文件类型 因此我无法使用专门的 PDF 查看器 因此我无法使用模式文档交互控制器 我的主视图的背景设计与出现在文档周围的浅灰色框架相冲突 UIWebView 有谁知道如何去除灰色框架
  • 除了 LINQ 查询之外,如何在 C# 中使用匿名类型?

    我一直在尝试快速了解 C 中的一些新功能 其中我还没有机会使用的功能之一是匿名类型 我了解与 LINQ 查询相关的用法 并且我查看了这个帖子 https stackoverflow com questions 48668 how shoul
  • Facebook 字符串没有默认翻译

    我今天尝试运行附加了 Facebook SDK 的应用程序时遇到此错误 Warning string com facebook smart login confirmation continue as f1gender has no def
  • .NET 中的反向排序字典

    有什么方法可以在 C 中向后 反向 迭代 SortedDictionary 吗 或者有没有办法首先按降序定义 SortedDictionary SortedDictionary 本身不支持向后迭代 但您有多种可能性来实现相同的效果 Use