c# - 使用 HashSet 删除范围内的项目
问题描述
我正在使用哈希集。
我正在寻找一种从 HashSet 开头删除项目范围的方法。
有了List
它就可以做到RemoveRange
例子
从头开始删除 10 个项目:
dinosaurs.RemoveRange(0, 10);
这可以用 HashSet 完成吗?
[编辑] HashSet 的顺序无关紧要,因为它只包含随机字符串。
解决方案
HashSet
存储唯一的数据片段(在后台,存储与存储在 a 中的键相同Dictionary
)因此删除“前”10 个项目没有多大意义,因为它们将被有效地随机排序,但实际上并非如此随机满足大多数需求。
如果您需要更合适地随机订购它们,OrderBy
可以这样做:
var r = new Random();
foreach(var dinoToRemove in dinosaurs
.OrderBy(x => r.Next())
.Take(10))
{
dinosaurs.Remove(dinoToRemove);
}
如果你真的决定删除前十个,你也可以使用一个迭代器RemoveWhere
var count = 0;
dinosaurs.RemoveWhere(x => count++ < 10);
推荐阅读
- linux - Bash 练习为另一个脚本提供多个输入
- r - 带有向后消除交互的 brglm 模型中的错误:do.call("glm.control", control) 中的错误:第二个参数必须是一个列表
- python - 无法为 Selenium 会话设置代理
- jquery - 在页脚工具栏上带有 MENUTOOLBAR 和 Listbox 的 Jqgrid
- c - 如何使 Python.h 文件在 Ubuntu 中工作?
- java - 如何将具有多个相同键和列表的多个地图组合为值?
- php - 安装后 GD 库仍然丢失
- php - 注册成功后跳转到首页
- kubernetes - ERR_TOO_MANY_REDIRECTS 302 与 ELK Operator 7.10.0 使用 Server.basePath
- java - 检查项目的 Maven 构建生命周期的特定阶段的目标