热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何以最有效的方式迭代和删除hashset中的元素

如何解决《如何以最有效的方式迭代和删除hashset中的元素》经验,为你挑选了1个好方法。

好的,我想出了什么,但我想知道这是最有效的方式.我需要为ram内存问题做这件事.

HashSet hsLinks = new HashSet();
List lstSortList = new List();

// fill hashset with millions of records

while (true)
{
    string srLastitem = "";
    foreach (var item in hsLinks)
    {
        srLastitem = item;
        break;
    }
    lstSortList.Add(srLastitem);
    hsLinks.Remove(srLastitem);
    if (hsLinks.Count == 0)
        break;
}

c#.net 4.5.2 wpf应用程序



1> i3arnon..:

看来你正试图将物品从中移动HashSetList.如果是这种情况,只需将所有内容移动一次List.AddRange并使用HashSet.Clear以清空HashSet:

lstSortList.AddRange(hsLinks);
hsLinks.Clear();

如果(如Vajura建议的那样)你担心要保留2份参考文献*,你可以改为移动批次而不是单个项目:

const int batchSize = 1000;
var batch = new string[batchSize];
do
{
    var batchIndex = 0;
    foreach (var link in hsLinks.Take(batchSize))
    {
        batch[batchIndex] = link;
        batchIndex++;
    }

    if (batchIndex 

使用适当大小的批次来解决内存问题.


*注意:参考大小为4或8字节(分别为32位和64位).当你将字符串(它们是.Net中的引用类型)添加到列表中时,你没有复制它们,只有引用(这些引用几乎可以忽略不计).


@Vajura不,`string`不是.Net中的结构.
推荐阅读
  • 如何解决《使用Dictionary和HashSet的GetHashCode方法》经验,为你挑选了1个好方法。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 如何解决《为什么我会在字典上使用HashSet?》经验,为你挑选了2个好方法。 ... [详细]
  • 这篇文章运用简单易懂的例子给大家介绍JAVAHashSet和TreeSet实现保证存入元素不会重复,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • C# LiNQ 查询 join连接
    C# LiNQ 查询 join连接 ... [详细]
  • 开发笔记:2020 BJDCTF Re encode
    开发笔记:2020 BJDCTF Re encode ... [详细]
  • 如何解决《SortedSet-存储类对象时的自定义顺序》经验,为你挑选了1个好方法。 ... [详细]
  • 如何解决《javaHashSet中的重复项》经验,为你挑选了1个好方法。 ... [详细]
  • 如何解决《使用int数组的HashSet用法》经验,为你挑选了1个好方法。 ... [详细]
  • HashSet and HashMap
    HashSetandHashMap总体介绍之所以把HashSet和HashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说HashS ... [详细]
  • 如何解决《HashSetremoveAll方法非常慢》经验,为你挑选了1个好方法。 ... [详细]
author-avatar
手机用户2602897765
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有