【问题标题】:Data structure to store ip addresses存储ip地址的数据结构
【发布时间】:2014-05-16 14:27:59
【问题描述】:

存储客户端 IP 地址列表的最佳数据结构是什么?

我认为对内存大小或查找速度没有任何严格的限制,因为它是一个 ip 地址过滤应用程序。

我在考虑字典,但可能它为存储唯一地址​​列表这样简单的东西提供了太多开销。 Hashtable 本质上也是基于字典的。

数组不好,因为即使存储少量地址也必须分配太多空间。 列表不是唯一的。

【问题讨论】:

  • 使用列表。 Ovveride list.Add 函数在将 ip 添加到列表之前进行检查以保持唯一性。即 if(!list.contains(this_ip)) list.Add(this_ip)
  • 我认为您高估了哈希表所涉及的开销。
  • @Dukeling:上次我进行分析时,HashSet<T> 每个条目需要大约 24 个字节。见blog.mischel.com/2008/05/21/more-on-net-collection-sizes
  • 答案在很大程度上取决于您所谈论的 IP 地址数量。如果是几十个,List<T> 或数组可能就可以了。高达几百万,Dictionary<TKey, TValue>HashSet<T> 将很难被击败。这还取决于您是否希望经常添加内容,或者列表是否相对静态。

标签: c# data-structures


【解决方案1】:

如果你想要独特性,你可以使用

HashSet<IPAddress>

【讨论】:

    【解决方案2】:

    你可以试试HashSet&lt;T&gt;

    【讨论】:

      猜你喜欢
      • 2019-05-20
      • 1970-01-01
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 2011-10-30
      • 2012-01-09
      相关资源
      最近更新 更多