我有一个字典,其中键是一个字符串;而值是浮动列表。
key = "Sensor1";
values = new List<float>{0.4, 0.5, 0.2, 0.4};
这是我可以用于我的案例的最佳数据结构吗?我关心的是解析值列表所花费的时间(我会经常解析它,无论是读取还是写入),但是我没有看到另一种方式,除了字典中包含值的列表
40个传感器每秒读取10次值;我读了所有这些值,并在字典中保存了包含值和键的列表。 在某些情况下,必须更换每个传感器列表中的值。整个过程非常复杂;这是总结它的最快方式;希望很清楚。
答案 0 :(得分:1)
如果您的数据结构允许,它通常Dictionary
主要用于此类任务,因为符号为O(1),所以它非常快。
我建议调查HashSet
,对你的情况可能更有效。
可以找到Dictionary
,List
和HashSet
之间的比较here。
答案 1 :(得分:0)
如果您的列表代表了共享某些常见行为的相关值,那么您可以将此列表封装在类中,从中受益:
class SensorData {
public IList<float> Values {get;}
public SensorData(IEnumerable<float> values) {
Values = values.ToList();
}
// Add some useful methods that operate on Values here
...
}
现在而不是制作
IDictionary<string,List<float>>
你会做
IDictionary<string,SensorData>
可能会提高代码的可读性。
答案 2 :(得分:0)
对于您描述的数据类型,您需要使用某种哈希映射, 有多种方法可以实现哈希映射(如c#字典), 例如,在每个键中,您可以将值保存为树(二进制,红色/黑色,..),链表,排序数组等等。 还需要选择一个需要非常快的哈希函数。 我相信微软可以通过合适的性能以最佳方式实现字典。
答案 3 :(得分:0)
不确定你的意思&#34;解析值列表&#34;但可能你正在寻找Lookup。
类似于Dictionary<TKey, Collection<TElement>>
。您可以通过此键按键和访问集合对项目进行分组