如何计算集合中属性值的出现次数?

我有一些数据,我安排到自定义类对象的集合。

每个对象除了独特的名称之外还有一些属性,我将其称为batchexists

我的集合中有很多对象,但只有batch可能值(尽pipe可能性的数量没有预先定义)。

统计每批可能值的最简单方法是什么?

最终,我想创build一个像这样的用户表单(值是任意的,为了说明):

 Batch A 25 parts (2 missing) Batch B 17 parts Batch C 16 parts (1 missing) 

我的想法之一是做一个自定义的“批处理”类,它将有属性.existcount.existcount并创build这些对象的集合。

我想知道是否有一个更简单,更直接的方法来统计这些值。 我应该放弃一个二级集合的想法,并创build一些循环和计数器variables,当我生成我的用户表单?

你描述了你拥有的两种可能性:

  1. 每次需要点数时,循环播放您的collections
  2. 预先计算统计信息,并在需要时进行访问

这是一个经常需要做的常见select。 我认为这是在性能与复杂性之间。

选项1与天真的循环实现将带你O(n)的时间,其中n是你的集合的大小。 而且,除非您的collections是静态的,否则每次需要统计时都需要计算。 在光明的一面,天真的循环是相当微不足道的写作。 频繁查询和/或大型集合的性能可能会受到影响。

选项2快速检索,基本上是O(1)。 但是每次你的collections改变,你需要重新计算你的统计。 然而,这是增量重新计算,即您不必通过整个集合,而只是通过更改的项目。 但这意味着你需要处理更新的所有可能性(新项目,已删除项目,更新项目)。 所以这比天真的循环复杂一点。 现在,如果你的藏品一直都是全新的,而且你只能查询一次,那么在这里你几乎没有什么收获。

因此,根据您的问题的参数决定权衡哪里。