[英]How do I count occurrences of a property value in a collection?
我将一些数据整理到自定义类对象的集合中。
每个对象除了其唯一名称外,还具有几个属性,我将其称为batch
并exists
我的收藏夹中有很多对象,但是batch
只有几个可能的值(尽管未预先定义可能性的数量)。
计算batch
的每个可能值的出现的最简单方法是什么?
最终,我想创建一个用户表单,如下所示(值是任意的,以示说明):
Batch A 25 parts (2 missing)
Batch B 17 parts
Batch C 16 parts (1 missing)
我的一个想法是做一个自定义的“批次”类,这将有属性.count
和.existcount
和创建这些对象的集合。
我想知道是否有一种更简单,更直接的方法来计算这些值。 我生成用户表单时是否应该放弃辅助集合的想法,只创建一些循环和计数器变量?
您很好地描述了您拥有的两种可能性:
这是一个经常要做的常见选择。 我认为这是性能与复杂性之间的关系。
具有天真的循环实现的选项1将花费O(n)时间,其中n是集合的大小。 而且,除非您的集合是静态的,否则您每次需要统计时都必须对其进行计算。 从好的方面来说,朴素的循环编写起来很简单。 频繁查询和/或大量收集的性能可能会受到影响。
选项2快速检索,基本上是O(1)。 但是每当您的集合发生变化时,您都需要重新计算统计信息。 但是,这是增量重新计算,即您不必遍历整个集合,而只需遍历更改的项目即可。 但这意味着您需要处理所有可能的更新(新项目,已删除项目,已更新项目)。 因此,这比幼稚的循环要复杂一些。 现在,如果您的收藏一直都是全新的,并且只查询一次,那么您在这里几乎没有收获。
因此,由您决定根据问题的参数在哪里进行权衡。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.