如何计算集合中属性值的出现次数?
我有一些数据,我安排到自定义类对象的集合。
每个对象除了独特的名称之外还有一些属性,我将其称为batch
和exists
我的集合中有很多对象,但只有batch
可能值(尽pipe可能性的数量没有预先定义)。
统计每批可能值的最简单方法是什么?
最终,我想创build一个像这样的用户表单(值是任意的,为了说明):
Batch A 25 parts (2 missing) Batch B 17 parts Batch C 16 parts (1 missing)
我的想法之一是做一个自定义的“批处理”类,它将有属性.existcount
和.existcount
并创build这些对象的集合。
我想知道是否有一个更简单,更直接的方法来统计这些值。 我应该放弃一个二级集合的想法,并创build一些循环和计数器variables,当我生成我的用户表单?
你描述了你拥有的两种可能性:
- 每次需要点数时,循环播放您的collections
- 预先计算统计信息,并在需要时进行访问
这是一个经常需要做的常见select。 我认为这是在性能与复杂性之间。
选项1与天真的循环实现将带你O(n)的时间,其中n是你的集合的大小。 而且,除非您的collections是静态的,否则每次需要统计时都需要计算。 在光明的一面,天真的循环是相当微不足道的写作。 频繁查询和/或大型集合的性能可能会受到影响。
选项2快速检索,基本上是O(1)。 但是每次你的collections改变,你需要重新计算你的统计。 然而,这是增量重新计算,即您不必通过整个集合,而只是通过更改的项目。 但这意味着你需要处理更新的所有可能性(新项目,已删除项目,更新项目)。 所以这比天真的循环复杂一点。 现在,如果你的藏品一直都是全新的,而且你只能查询一次,那么在这里你几乎没有什么收获。
因此,根据您的问题的参数决定权衡哪里。