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