【发布时间】:2014-03-20 11:30:46
【问题描述】:
我真的不知道如何总结标题中的问题,对不起。 :)
假设我有一个包含数千个对象的集合(即 ObservableCollection)。这些对象由一个升序时间戳和一个FALSE 布尔值组成(非常简化)。
像这样:
[0] 0.01, FALSE
[1] 0.02, FALSE
[2] 0.03, FALSE
[3] 0.04, FALSE
...
现在,让我们假设在这个集合中,有些块的标志设置为TRUE。
像这样:
[2345] 23.46, FALSE
[2346] 23.47, FALSE
[2347] 23.48, FALSE
[2348] 23.49, TRUE
[2349] 23.50, TRUE
[2350] 23.51, TRUE
[2351] 23.52, TRUE
[2352] 23.53, TRUE
[2353] 23.54, FALSE
[2354] 23.55, FALSE
...
我需要找到块并将块前后1.5秒内的所有标志设置为TRUE。
如何在保持合理性能的同时实现这一目标?
【问题讨论】:
-
你不能在有人将属性设置为 TRUE 的那一刻,立即将周围对象的属性也更改为 TRUE 吗?
-
不,很遗憾这是不可能的。
-
为什么不在周围的对象中使用对集合的布尔值的引用,而不是使用私有布尔属性?
-
考虑到无论数组中的元素数量如何(保持在可接受的范围内),您都必须保持恒定的时间,最好的解决方案是 imo、字典或任何其他键/值存储,用于常量O(1) 选择性能。但你需要以某种方式构建它。
-
我无法更改对象的架构(请注意,我在问题中使用了非常简化的表示),因为这意味着我的软件将发生巨大变化。
标签: c# linq collections