在列表中查找项目的最快方法?

2023-12-21

我有一个未排序的字符串列表。我可以将这些项目放入数组、列表、排序列表等中。

我需要找到在此列表中查找字符串的最快方法。我是否最好将列表转储到数组中,对其进行排序,然后实现二分搜索?或者框架是否提供了一种方法来做到这一点?

Thanks

附:针对 .NET 2.0 使用 VS2008


如果您的目标只是快速查找集合中的字符串,请将它们放入HashSet http://msdn.microsoft.com/en-us/library/bb359438.aspx.

HashSet.包含 http://msdn.microsoft.com/en-us/library/bb356440.aspx是一个 O(1) 方法,并且字符串默认具有良好的哈希算法,因此很难制作比这更快的例程。


Edit:

既然你使用的是.NET 2,我就这样做Dictionary<string,string>并使用相同的字符串作为键和值。Dictinoary<TKey,TValue>.Contains也是 O(1),并且比您尝试的任何基于列表的搜索要快得多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在列表中查找项目的最快方法? 的相关文章

  • 如何检查图像对象与资源中的图像对象是否相同?

    所以我试图创建一个简单的程序 只需在单击图片框中更改图片即可 我目前只使用两张图片 所以我的图片框单击事件函数的代码 看起来像这样 private void pictureBox1 Click object sender EventArgs
  • 无法使用已与其底层 RCW 分离的 COM 对象。在 oledb 中

    我收到此错误 但我不知道我做错了什么 下面的代码在backrgroundworker中 将异常详细信息复制到剪贴板 System Runtime InteropServices InvalidComObjectException 未处理 通
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 在 Dynamics CRM 插件中访问电子邮件发件人地址

    我正在编写一个 Dynamics CRM 2011 插件 该插件挂钩到电子邮件实体的更新后事件 阶段 40 pipeline http msdn microsoft com en us library gg327941 aspx 并且在此阶
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问

随机推荐

  • 默认值 Specflow 步骤定义

    我刚开始接触 SpecFlow 的世界 并且遇到了第一个问题 在保持代码干燥方面 我想执行以下操作 有两种情况 Given I am on a product page And myfield equals todays date Then
  • 旋转 - 使用 LINQ C# 转置 List>

    我有一个List
  • LINQ查询任何属性包含字符串[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何查询类型 T 的集合 以返回 T 的所有项目 其中 T 的任何属性包含某个字符串 EDIT 假设我在检查是否包含之前将每个属性转换为字
  • 在 iPad 上捕获 DOM/HTML/BODY 上的 Click 事件

    我使用 jQuery 来检测 DOM 上的点击 或者让我们检测每次点击 document click function alert Click 除了 iPad iPhone 版 Safari 之外 该功能在所有浏览器中都表现良好 我还尝试在
  • 阅读 R 的电子邮件附件

    我正在使用 R 读取 Outlook 附件 我的参考资料在这里 使用 R 从 Outlook 电子邮件下载附件 https stackoverflow com questions 45577698 download attachment f
  • 以编程方式更改 WPF 中的按钮图标

    我目前有一个按钮 上面有一个图标 图像 我已经在 XAML 中配置了按钮和图像
  • 为什么静态构造函数没有任何参数?

    根据 MSDN 静态构造函数不采用访问修饰符或具有参数 在创建第一个实例或引用任何静态成员之前 会自动调用静态构造函数来初始化类 静态构造函数不能直接调用 谁能解释一下为什么静态构造函数不能有参数 正如 MSDN 所说 在创建第一个实例之前
  • 存储库模式与 DAL

    它们是一样的吗 刚刚看完罗布 康纳利的店面教程 https www asp net mvc videos mvc 1 aspnet mvc storefront aspnet mvc storefront part 1 architectu
  • 自定义集合在编辑时使 DataGrid 崩溃

    我目前正在尝试将 DataGrid ItemsSource 绑定到自定义 RowCollection 它实现 IList 和 INotifyCollectionChanged Public Class RowCollection of T
  • HTML 和 CSS:如何设置 HR 标签的样式以嵌入标题

    我正在尝试创建一个遵循以下模型的 HR
  • 如何在flutter应用程序中获取JSON数据?

    我从服务器获取了以下 JSON 数据 我需要在 pageviewbuilder 以及 flutter 应用程序中的 listview builder 中获取和配置这些数据 列表视图构建器 垂直滚动 嵌套在页面视图构建器 水平滚动 中 我已经
  • 为什么Cloneable没有clone()? [复制]

    这个问题在这里已经有答案了 我试图了解 Object clone 在 Java 中是如何工作的 我发现了以下事实 一个类实现了Cloneable接口 向 Object clone 方法指示该方法对该类的实例进行逐字段复制是合法的 调用Obj
  • 无法解析“ImmutableList”中的“of”方法[已关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 调试详情 按照教程从 Android Billing 4 0 迁移到 5 0https developer androi
  • ASP.NET URL 重写

    如何在 ASP NET 中重写 URL 我希望用户能够访问 http www website com users smith 代替 http www website com user smith 尝试托管 Fusion URL 重写器和反向
  • 在 iPhone 上解析 HTML [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • python 3中的str到时间对象

    给定一对str代表一个对象ISO 8601 https en wikipedia org wiki ISO 8601时间和时区 time str 09 30 time zone str America New York 如何将这两个字符串解
  • Android Studio 失败 - 不支持不支持的主要次要版本 51.0

    直到昨天 我的 Android Studio 工作正常并帮助我创建应用程序 但今天 它开始给出 Gradle 错误 指出不支持主要次要版本 51 0 并要求我配置 gradle 如果我尝试重新导入项目 我会收到相同的错误 我的java版本是
  • RStudio 中的代码折叠:在代码中创建层次结构

    I m writing R scripts in RStudio and I use the code folding https support rstudio com hc en us articles 200484568 Code F
  • 应用 Thunderbird 的 git 系列补丁的最简单方法是什么

    我有一封邮件 其中包含 N 个附件 格式为 000X xxxx patch 我想将所有补丁应用到我的 master 之上 但我希望将所有提交分开 因为原始作者提交了它们 当然包括提交消息 方法一 打开邮件 点击另存为 xxx eml 然后
  • 在列表中查找项目的最快方法?

    我有一个未排序的字符串列表 我可以将这些项目放入数组 列表 排序列表等中 我需要找到在此列表中查找字符串的最快方法 我是否最好将列表转储到数组中 对其进行排序 然后实现二分搜索 或者框架是否提供了一种方法来做到这一点 Thanks 附 针对