按 ID 进行二分查找对象数组

2024-01-15

再会!

我有一个 ValueObj 列表:

class ValueObj
{
   int ID;
   float value;
}

如何通过id获取二分查找对象? (列出温度值)

我创建了 ValueComparer 类,但不知道我对吗?

class ValueComparer<ValueObj>
{
   public int Compare(ValueObjx, ValueObjy)
   {
       if (x == y) return 0;
       if (x == null) return -1;
       if (y == null) return 1;

       return -1; ///???
   }
}

我需要按 ID 对列表进行排序。像那样?:

tempValues.Sort(new ValueComparer());

那么如何使用二分查找呢?


首先你应该让你的班级像这样。 您的字段不是公开的,您无法访问它们, 而且公共领域也不好,所以你应该将它们改为财产

    class ValueObj
    {      
        public int ID { get; set; }
        public float value { get; set; };
    }

你的比较器是这样的

class ValueComparer : IComparable<ValueObj>
{
  public int Compare(ValueObj x, ValueObj y)
  {
      if (ReferenceEquals(x, y)) return 0;
      if (x == null) return -1;
      if (y == null) return 1;

      return x.ID == y.ID ? 0 :
               x.ID > y.ID ? 1 : -1;
  }
}

然后你有一个像这样的列表

var tempValues = new List<ValueObj>();
//many items are added here

在执行二分搜索之前,您应该始终对列表进行排序

 //this does not modify the tempValues and generate a new sorted list
 var sortedList = tempValues.OrderBy(x => x.ID).ToList();

或者你可以排序tempValues直接地

//tempValues is modified in this method and order of items get changed
tempValues.Sort(new ValueComparer<ValueObj>());

现在你想找到特定的索引ValueObj

var index = sortedList.BinarySearch(specificValueObj, new ValueComparer<ValueObj>());

或者如果您使用了第二种排序方法

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

按 ID 进行二分查找对象数组 的相关文章

  • C# 动态 Linq 变量Where 子句

    我正在按照 Scott Gu 的文章创建动态 LINQhttp weblogs asp net scottgu archive 2008 01 07 dynamic linq part 1 using the linq dynamic qu
  • 堆栈独立的C/C++蓝牙API?

    我想知道是否有适用于 Windows XP Vista 7 x86 和 x64 的堆栈独立 C C 蓝牙 api 我的目标是创建连接并通过蓝牙发送 接收一些时间关键的数据 我的研究给了我以下选择以及这项任务的缺点 用于蓝牙的 Windows
  • 实体框架 5 不清除导航属性

    我在 Entity Framework 5 中遇到了这个奇怪的问题 我在其中一个实体中有一个导航属性 我想将其设置为null 但由于某种原因 该属性只有在我第二次调用该属性时才会被清除 using var db new Entities v
  • 将 Uploadify 与 Sharepoint 和 .net 结合使用

    我在共享点页面上有一些由 JQuery 生成的 html 我想在这个 html 中使用 uploadify 将文件上传到服务器 亚历山大 https stackoverflow com users 25427 alexander gyosh
  • 将 gcov 与 CMake/CDash 结合使用的详细指南?

    我在我的项目中使用 CMake 并设置了 cdash 服务器以进行连续 夜间构建 一切运行良好 通过设置 crontab 我们可以将每小时 每晚的构建 测试结果自动上传到我们的 cdash 服务器 我的下一步是将测试覆盖率报告添加到构建中
  • string.empty 和 string[0] == '\0' 之间的区别

    假设我们有一个字符串 std string str some value is assigned 有什么区别str empty and str 0 0 C 11 及更高版本 string variable 0 如果字符串为空 则需要返回空字
  • C# 列表框 ObservableCollection

    我正在尝试使用 ListBox DataSource ObservableCollection 但是我不知道如何在 OC 更新时让列表框自动更新 我可以在 OC 上挂接 CollectionChanged 事件 但是我需要对列表框执行什么操
  • 如何检查是否发生溢出? [复制]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • 在 C# 中使用 as 关键字与泛型类型发生冲突的编译时行为

    当尝试对无法转换为的非泛型类型使用 C as 关键字时 编译器会给出无法转换类型的错误 但是 当对泛型类型使用 as 关键字时 编译器不会给出错误 public class Foo public class Bar
  • 将 libpng 链接到 android 原生项目

    我在尝试在本机 Android 项目中加载 libpng 时遇到问题 编译器似乎无法识别 libpng 函数 但可以识别类型 如 png byte 它可以正常编译类型 但如果我添加函数 则会抛出错误 这是编译输出 Windows 7 cmd
  • 找出对象列表中是否包含具有指定字段值的内容?

    我有一个从数据库收到的 DTO 列表 它们有一个 ID 我想确保我的列表包含具有指定 ID 的对象 显然 在这种情况下创建具有预期字段的对象不会有帮助 因为 contains 调用 Object equals 并且它们不会相等 我想出了这样
  • XPath 选择具有特定属性值的元素?

    我在使用 XPath 选择节点时遇到问题 我将展示一个示例 由于实际数据量很大 xml 文件被缩短了 这是 XML 的子集
  • “sizeof”对不完整类型列表结构 C 的无效应用

    我正在尝试实现一种处理页面错误的替换算法 因此 我尝试使用 malloc 创建一个循环链表 但出现以下错误 无效的应用程序sizeof to incomplete typepageInMemory 以下是代码 typedef struct
  • Facebook Graph API“/userid/feed”返回空白

    我正在使用 Facebook C SDK 但似乎无法使用 Graph API 获取反馈数据 我已从用户那里获得了以下扩展权限 范围 离线访问 publish stream publish checkins create event read
  • Cuda:最小二乘求解,速度较差

    最近 我使用Cuda编写了一个名为 正交匹配追踪 的算法 在我丑陋的 Cuda 代码中 整个迭代需要 60 秒 而 Eigen lib 只需 3 秒 在我的代码中 矩阵 A 是 640 1024 y 是 640 1 在每一步中 我从 A 中
  • 第一个随机数始终小于其余随机数

    我碰巧注意到 在 C 中 使用 std rand 方法调用的第一个随机数大多数时候都明显小于第二个随机数 关于 Qt 实现 第一个几乎总是小几个数量级 qsrand QTime currentTime msec qDebug lt lt q
  • 为 C++ 类播种 rand()

    我正在开发一个 C 类 它使用rand 在构造函数中 我真的希望这个班级在几乎所有方面都能照顾好自己 但我不知道在哪里播种rand 如果我播种rand 在构造函数中 每次构造我的对象类型的新实例时都会对其进行播种 因此 如果我按顺序创建 3
  • 访问 Visual Studio 扩展中的当前代码窗格

    我正在编写一个 Visual Studio 2010 扩展 在代码视图中带有右键单击菜单 我希望能够从菜单项事件处理程序检查当前代码 但无法在对象模型中找到执行此操作的位置 如何在 Visual Studio 扩展中访问当前窗口中的代码 E
  • 任何浮点密集型代码是否会在任何基于 x86 的架构中产生位精确的结果?

    我想知道使用浮点运算的 C 或 C 代码是否会在任何基于 x86 的体系结构中产生位精确的结果 无论代码的复杂性如何 据我所知 自 Intel 8087 以来的任何 x86 架构都使用准备处理 IEEE 754 浮点数的 FPU 单元 并且
  • 构建 OpenCV 时出错 :: MonitorFromRect 未在此范围内声明

    我试图建立OpenCV version 2 4 8与它一起使用CodeBlocks and MinGw 我按照以下指示进行操作here http kevinhughes ca tutorials opencv install on wind

随机推荐

  • 来自 gitlab-ci docker 的 SSH 在“SSH2_MSG_KEX_ECDH_REPLY”上失败

    我正在尝试从 GitLab CI 中运行的 Docker 部署容器通过 SSH 连接到远程网络服务器 我第一次尝试时确实成功连接了一次 现在它不断失败 调试输出的最后两行 完整输出如下 是 debug1 expecting SSH2 MSG
  • 如何关闭yarn@2 PnP?

    我正在使用纱线2 0 0 rc 27 工作区 TypeScript 我想关闭 PnP 并使用node modules再次 我尝试了以下设置package json installConfig pnp false 然而 Yarn 每次都使用
  • 主干视图扩展被污染

    我有一个代表模式的视图 该视图有一些属性 例如页脚额外类 我遇到一个问题 当某些模式改变它的值时 所有模式都会收到相同的属性 这是例子 var ModalView AlertingView extend className modal pa
  • iPhone 和 Core Data:如何在更新之间保留用户输入的数据?

    考虑一个包含动物目录的 iPhone 应用程序 该应用程序应允许用户为每只动物添加自定义信息 比如说评级 范围为 1 到 5 以及他们可以输入的有关该动物的一些注释 但是 用户将无法修改动物数据本身 假设当应用程序更新时 静态 目录部分应该
  • 如何使用 JScript 获取进程的主窗口句柄?

    JScript 中是否有任何方法可以通过提供进程名称来获取进程主窗口的句柄 这Process MainWindowHandle http msdn microsoft com en us library system diagnostics
  • 从开发迁移到云时从一个连接字符串切换到另一个连接字符串

    我正在开发一个云应用程序 当我在计算机上测试应用程序时 我希望在 Service Configuration cscfg 中按如下方式设置连接字符串
  • Jquery 窗口最小化切换

    我有一个 div 当您单击另一个 div 时 它会切换显示和不显示 我如何修改我的代码 以便当用户最小化整个浏览器窗口时它会自动切换 从视图中隐藏 div 以便当用户取消最小化窗口时 div 不再可见 最小化窗口 或切换到另一个应用程序 应
  • 将 REST 调用与“Activity”分离的最佳方法

    我正在使用 Retrofit 并希望当用户在我的活动之间导航时 REST 调用能够继续存在 而不是仅在配置更改时保留它们 几个选项 改进同步调用AsyncTask并将其放入保留的 任务片段 http www androiddesignpat
  • 如何通过adb获取android手机的电话号码?

    有没有办法通过adb获取手机的电话号码 我认为 dumpsys 是一个可能的答案 但系统服务似乎都没有跟踪手机自己的号码 iphonesubinfo服务 跟踪 订户信息 包括电话号码 很遗憾iphonesubinfo服务没有实现dump 方
  • 我们如何创建非对称安全密钥?

    我们如何在 C 中创建 AsymmetrySecurityKey 实际上 我们正在使用 AsymetricSecurityKey 创建签名凭据 这是我们的代码 Define const Key this should be private
  • 如何在jquery中单击按钮时获取所选下拉值的值

    我使用 Bootstrap 和 jquery 创建一个包含下拉菜单和按钮的动态表 我想在单击按钮时获取在 jquery 中选择的下拉菜单的值 下面是我的代码 table class table table bordered tbody fo
  • 计算图形的方向以将其拉直(在Python中)

    我有一个计算图形方向的代码和一个根据计算出的方向拉直图形的函数 当我运行代码时 方向似乎很好 但是当函数尝试拉直图形时 图形看起来像是变成了另一种形状 代码中可能有什么问题吗 代码 import numpy as np import mat
  • 获取或设置UIButtonTypeInfoLight的点击区域

    因此 类型为 UIButtonTypeInfoLight 的 UIButton 的可点击区域似乎比其框架大得多 因此 我无法在它旁边放置按钮 尝试点击它会点击信息按钮 infoButton frame CGRectMake 0 0 40 h
  • 当有全局指针时,为什么分叉的进程不会互相影响?

    我知道fork 函数创建一个与其父进程相同的进程 仅其具有的 PID 不同 它们最初具有相同的变量 并且对这些变量所做的更改不会相互影响 但是当全局指针变量被共享时会发生什么呢 我写了一些代码并打印出了结果 看起来父进程和子进程都有指向sa
  • 在 JavaScript 导入语法中使用括号

    我遇到了一个 JavaScript 库 它使用以下语法来导入库 import React Component PropTypes from react 上面的方法和下面的有什么区别 import React Component PropTy
  • 如何在运行时设置获取类型? + 休眠

    如何在 hibernate 3 2 运行时设置获取类型 session beginTransaction Customer customer session get getCustomerId session save customer s
  • ImportError:无法导入名称“HTMLAwareEntitySubstitution”

    我刚刚安装了 beautifulsoup4 4 1 0 并将 pip 升级到版本 9 0 1 当我写这个时 from bs4 import BeautifulSoup 出现错误 Traceback most recent call last
  • JUNG(Java Graph):如何防止顶点标签和边标签重叠?

    我目前正在使用Jung http jung sf net绘制图表 我真正的意思是图表而不是图表 问题在于顶点和边标签与顶点和边重叠 这会导致图表看起来很奇怪 这个问题并不局限于特定的布局算法 尽管我一直在使用 FRLayout 是否有可能告
  • pip installwheel 随机失败

    我有一个在本地打包为wheel的python项目 我想在docker容器的虚拟环境中安装这个wheel 基于python alpine3 7 我的问题是 有时我工作 有时它无法解决轮子中的依赖关系 似乎是随机的 轮子的依赖关系是 insta
  • 按 ID 进行二分查找对象数组

    再会 我有一个 ValueObj 列表 class ValueObj int ID float value 如何通过id获取二分查找对象 列出温度值 我创建了 ValueComparer 类 但不知道我对吗 class ValueCompa