List>Remove() 方法

2024-04-13

我想在列表列表上使用 Remove() 方法,但它对我不起作用。
简单的例子应该说明一切:

List<List<int>> list = new List<List<int>>();
list.Add(new List<int> { 0, 1, 2 });
list.Add(new List<int> { 1, 2 });
list.Add(new List<int> { 4 });
list.Add(new List<int> { 0, 1, });

list.Remove(new List<int> { 1, 2 });

如果我使用RemoveAt(1),它可以正常工作,但Remove()则不行。
这段代码返回 false 显然是同样的原因:

List<int> l1 = new List<int>();
List<int> l2 = new List<int>();
l1.Add(1);
l2.Add(1);

bool b1 = l1 == l2; // returns False
bool b2 = l1.Equals(l2); // returns False too

所以在我看来,我不能简单地比较两个列表甚至数组。我可以使用循环代替Remove(),但一定有更简单的方法。

提前致谢。


问题是List<T>不覆盖Equals and GetHashCode,这就是List<T>将在尝试查找项目时使用。 (事实上​​,它将使用默认的相等比较器,这意味着它将使用IEquatable<T>如果对象实现了它,则返回到object.Equals/GetHashCode如果需要的话)。Equals当您尝试删除不同的对象时将返回 false,默认实现只是比较引用。

基本上,您需要编写一个方法来比较两个列表是否相等,并使用它来查找要删除的条目的索引。然后你可以按索引删除(使用RemoveAt)。编辑:如上所述,Enumerable.SequenceEqual可用于比较列表。由于在可以轻松计算计数时并未首先检查计数是否相等,因此效率并不高。另外,如果你only需要比较List<int>值,您可以避免对相等比较器的虚拟方法调用。

另一种选择是避免使用List<List<int>>首先 - 使用List<SomeCustomType> where SomeCustomType includes a List<int>。然后你可以实施IEquatable<T> in that类型。请注意,这也可能允许您在自定义类型中封装适当的逻辑。我经常发现,通过“嵌套”集合类型的类型,自定义类型封装了meaning更有效地收集内部集合。

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

List>Remove() 方法 的相关文章

  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • 将处理后的图形绘制到另一个图形中

    我想将一个经过处理的图形绘制到另一个图形中 I have two graphics var gHead Graphics FromImage h var gBackground Graphics FromImage b Transform
  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • Blazor 与 Razor

    随着 Blazor 的发明 我想知道这两种语言之间是否存在显着的效率 无论是在代码创建方面还是在代码的实际编译 执行方面 https github com SteveSanderson Blazor https github com Ste
  • 有什么工具可以说明每种方法运行需要多长时间?

    我的程序的某些部分速度很慢 我想知道是否有我可以使用的工具 例如它可以告诉我可以运行 methodA 花了 100ms 等等 或者类似的有用信息 如果您使用的是 Visual Studio Team System 性能工具 中有一个内置分析
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • Guid 应包含 32 位数字和 4 个破折号

    我有一个包含 createuserwizard 控件的网站 创建帐户后 验证电子邮件及其验证 URL 将发送到用户的电子邮件地址 但是 当我进行测试运行时 单击电子邮件中的 URL 时 会出现以下错误 Guid should contain
  • 迭代列表的奇怪速度差异

    我创建了两个重复两个不同值的长列表 在第一个列表中 值交替出现 在第二个列表中 一个值出现在另一个值之前 a1 object object 10 6 a2 a1 2 a1 1 2 然后我迭代它们 不对它们执行任何操作 for in a1 p
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • 为什么 BOOST_FOREACH 不完全等同于手工编码的?

    From 增强文档 http www boost org doc libs 1 48 0 doc html foreach html foreach introduction what is literal boost foreach li
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 事件日志写入错误

    很简单 我想向事件日志写入一些内容 protected override void OnStop TODO Add code here to perform any tear down necessary to stop your serv
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens

随机推荐

  • Haskell 中模拟对象的身份

    用面向对象的语言编写模拟时 每个对象都有一个标识 即一种将其与模拟中的其他对象区分开来的方法 即使其他对象具有完全相同的属性 一个对象无论随着时间的推移发生了多大的变化 都会保留其身份 这是因为每个对象在内存中都有唯一的位置 我们可以用指针
  • 在 nginx 重写中发送额外的标头

    现在 我正在将我的应用程序的域从app example com to app newexample com使用以下内容nginx config server server name app example com location app
  • Excel 单元格值作为字符串不会存储为字符串

    我无法在此处获取此代码来获取单元格内容并将其存储为字符串 我得到一个双倍 54 6666666667代替N03 DM 示例单元格内容 如果我使用Cstr Sheet1 Cells i 5 Value 我仍然得到相同的结果 任何帮助 将不胜感
  • Jquery-nice-select 插件无法正常工作

    我正在使用 Jquery nice select 插件 http hernansartorio com jquery nice select http hernansartorio com jquery nice select 我有两个选择
  • 具有非常大的数字的十六进制到 int C#

    我有一个 256 个字符长的字符串 其中包含一个十六进制值 EC851A69B8ACD843164E10CFF70CF9E86DC2FEE3CF6F374B43C854E3342A2F1AC3E30C741CC41E679DF6D07CE6
  • 浏览器使用什么启发式方法来缓存未明确设置为可缓存的资源?

    13 2 2 启发式到期 由于源服务器并不总是提供明确的过期时间 因此 HTTP 缓存通常会分配启发式过期时间 并采用使用其他标头值 例如上次修改时间 的算法来估计合理的过期时间 HTTP 1 1 规范没有提供具体的算法 但确实对其结果施加
  • 如何在UITextView iPhone应用程序中控制复制、粘贴、全选、定义?

    我正在使用 UITextView 在 iPhone 应用程序中工作 我想要允许用户只能复制消息和粘贴消息 But i 不想显示全选 选择 定义等 我按照下面的代码来控制选项 但是 所有选项都显示在 UITextView 单击中 BOOL c
  • Excel-VBA。移动公式而不复制它们

    我从我的宏中获取了以下代码 该代码运行良好 Cells curRow M Copy Range N curRow R curRow PasteSpecial Paste xlPasteFormulas 我想问一下有没有办法可以移动公式而不需
  • 两种方式将 wpf datagrid 绑定到数据库

    HI all 我想以两种方式绑定 WPF 数据网格 我尝试过以下 XAML
  • 为什么 UITextField.text 是可选的?

    它开始时是一个空字符串而不是 nil 即使它被显式设置为 nil 它仍然是一个空字符串 我不明白 也许是为了通过分配 nil 来轻松清除 用它编写代码很笨拙 var textField UITextField print textField
  • HTML5 画布元素上的子像素抗锯齿文本

    我对画布元素抗锯齿文本的方式有点困惑 希望你们都能提供帮助 在下面的屏幕截图中 顶部的 Quick Brown Fox 是一个 H1 元素 底部的元素是一个画布元素 上面渲染有文本 在底部 您可以看到两个 F 并排放置并放大 请注意 H1
  • 在 Android 中下载并解压 Zip 文件 [重复]

    这个问题在这里已经有答案了 我的应用程序正在从服务器下载 zip 文件并解压该 zip 文件并将文件保存到 SD 卡中 但问题是如果我下载 4 5 MB 的 zip 文件并解压它 这工作正常 但如果我下载 30 35 MB zip 文件这会
  • 在 C# 中重命名文件

    如何使用 C 重命名文件 看一眼系统 IO 文件 移动 http msdn microsoft com en us library system io file move aspx 将文件 移动 到新名称 System IO File Mo
  • Helm 中的 PostgreSQL:initdbScripts 参数

    PostgreSQL 的默认 Helm Chart 即stable postgresql 定义了一个initdbScripts允许运行初始化脚本的参数 但是 我似乎无法获得正确的格式来了解如何通过命令行发出它 有人可以提供如何填充此命令行参
  • Haskell 列表的嵌套笛卡尔积

    我想创建一种方法 可以给它一个长度列表 它会返回达到这些长度的笛卡尔坐标的所有组合 用一个例子更容易解释 cart 2 5 Prelude gt 0 0 0 1 0 2 0 3 0 4 1 0 1 1 1 2 1 3 1 4 cart 2
  • 如何使用 JCalendar 选择数组中的元素?

    我有一个 3D 数组 其中包含 38 年 12 个月和每个月 31 个条目 无论该月有多少天 就像这样 array 38 12 31 我还有一个 JCalendar 现在除了看起来很漂亮之外什么也不做 并且 JCalendar 下面有一个按
  • 关于人脸验证(相对于人脸识别)的置信度分数有什么建议吗?

    我在代码中使用特征脸 PCA 进行人脸识别 我使用了OpenCV网站上的教程作为参考 虽然这对于识别人脸非常有用 即它可以正确地告诉您谁是谁 但基于置信度分数的人脸验证 或冒名顶替者检测 验证人脸是否已注册在训练集中 根本不起作用 我计算欧
  • 查找两个数组之间的共同值

    如果我想比较两个数组并创建一个插值输出字符串 如果数组中的数组变量 y存在于x如何获得每个匹配元素的输出 这就是我正在尝试的 但没有完全得到结果 x 1 2 4 y 5 2 4 x each do num puts The number n
  • 将 0xFF 写入文件时出现问题

    我正在尝试使用 PrintStream 将 0xFF 写入 java 文件 当我使用十六进制编辑器打开文件时 其他值会正确写入文件 但应该显示 0xFF 的值却显示为 0xC3BF 使用的变量类型是int 经过几次尝试后 我还发现我可以输入
  • List>Remove() 方法

    我想在列表列表上使用 Remove 方法 但它对我不起作用 简单的例子应该说明一切 List