【问题标题】:Is it effective to use HashSet to avoid duplicates?使用HashSet避免重复是否有效?
【发布时间】:2016-07-19 19:51:06
【问题描述】:
public IEnumerable<string> ListFoldersInternal(IEnumerable<CloudBlobDirectory> folders)
{
    return new HashSet<string>(folders.Select(x => x.Prefix));
}

使用HashSet避免重复并返回IEnumerable是一个不错的选择吗?

有改进此代码的想法吗?

【问题讨论】:

  • 如果你调用ToArray(),你不妨把返回类型设为CloudItem[]。如果返回类型为IList&lt;CloudItem&gt;,直接调用ToList()
  • 他们为避免重复的确切目的制定了一种方法。它叫做Distinct()
  • 您的 ListFolders 方法没有使用您的 ListFoldersInternal 方法?如果不是,那么我会重命名它们只是因为其含义可能会令人困惑。

标签: c#


【解决方案1】:

一种更易读的方法可能是使用 LINQ 扩展 Distinct

return folders.Select(x => x.Prefix).Distinct();

它以类似的方式实现(使用自己的缩减哈希集),尽管它是惰性计算的(在返回每个唯一项目后产生)。

【讨论】:

    【解决方案2】:

    使用 Hashset 是个好主意,而且绝对是避免重复的有效方法。 MSDN 说:

    HashSet&lt;T&gt; 类提供高性能的集合操作。一套 是一个不包含重复元素的集合,并且其 元素没有特定的顺序。

    如果你愿意,你也可以使用 LINQ

    List<T> myList = ......;
    List<T> removeDuplicates = myList.Distinct().ToList();
    

    【讨论】:

      猜你喜欢
      • 2015-09-12
      • 1970-01-01
      • 2020-10-20
      • 2014-12-16
      • 2013-09-17
      • 1970-01-01
      • 2023-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多