【发布时间】:2017-03-15 17:42:21
【问题描述】:
知道非泛型 ICollection 不提供 Contains 方法,那么检查给定对象是否已经在集合中的最佳方法是什么?
如果我有两个ICollections: A 和 B,并且想检查 B 是否包含 A 的所有元素,那么最好的方法是什么?我的第一个想法是将 A 的所有元素添加到 HashSet 中,然后使用 Contains 检查是否所有 B 的元素都在集合中。
【问题讨论】:
-
Cast->ToList->包含
-
@Nkosi 这比 OP 提出的解决方案要糟糕得多……
-
@Servy 仅仅停留在有效的地方是不够的,您需要了解更多以改进有效的解决方案。
-
@user5539357 如果您想对您的工作解决方案进行代码审查,请尝试 Code Review,尽管尝试对您的工作解决方案进行代码审查而不提供您的工作解决方案不是特别有帮助。仅仅要求人们重新创建您的工作解决方案对任何人都没有帮助,也不是该网站的目的。
-
让我们回顾一下。问题陈述:当B包含A的所有元素时
bool F(A, B)为真。给出的算法是:将A转换为集合,检查B的所有元素是否在A中。测试用例:A是{1},B是{1 , 2}。由于 B 包含 A 的所有元素,因此 F(A, B) 应该为真。算法是:检查B的所有元素是否都在A中。2是B的元素,2不在A中,因此,算法返回false。因此算法不正确。由于您认为您的算法是正确的,您还没有测试您的算法。测试一下!
标签: c# .net collections