c# - 如何在具有起始索引的字典中查找下一个 2 或 4 个空键
问题描述
我有Dictionary<ushort, ushort>
,假设我有KeyValuePair
来自带有索引43001
和值的 json 文件。如果值是float
我必须将浮点数转换为 2 个 ushort 值并将它们存储在字典中,其中高阶字节将位于43001
,低阶字节将存储在43002
. 如果是,double
我必须将它存储为 4 个超短裤。这很好,我知道该怎么做。如果我有另一个float
具有相同起始索引的值,43001
我必须以43003
. 如果43001
已经存在,我怎样才能在43001
until之后找到下一个 2 个可用索引(或 4 个用于双精度) 65535
。
我知道我可以做类似的事情
for (ushort i = 43001; i < 65535; i += 2)
{
if (!dict.ContainsKey(i) && !dict.ConainsKey(i + 1))
{
return //whatever;
}
}
双倍也是如此,但我认为有更优雅和更好的方法。
解决方案
在我的头顶上,像
var start = 43001;
var end = 65535;
var range = end - start;
var step = 2;
var nextSlot = Enumerable.Range(0, range / step)
.Select(i => (ushort)(start + i * step))
.First(i =>
Enumerable.Range(0, step)
.Select(ii => (ushort)(ii + i))
.All(iii => !dict.ContainsKey(iii)));
推荐阅读
- php - 在 laravel 5.3 中计数
- cordova - 离子与纯科尔多瓦
- python - 用 NA 替换文本文件中特定位置的空格
- gun - GUN 是大数据的好选择吗?
- sql-server - SQL Server 初学者问题
- r - `difftime` 中可能存在的错误 - 在 R 中计算日期时间的差异
- android - 底部应用栏不显示菜单项
- python - 使用python从firebase获取数据
- java - 如何通过 registerDriver() 方法加载 type-2 JDBC 驱动程序?
- java - How to implement North and South sections in same JPanel