目录

介绍

使用代码

1.列表示例的碎片整理

2.数组示例的碎片整理

更多功能


  • 下载源代码(ZIP)-3.7 KB
  • 下载源代码(7z-3.2 KB

介绍

1、此方法有助于替换列表的空元素或默认元素。元素的空引用或默认引用将在列表中替换。

public static bool Defragment(IList<T> list, Func<T, bool> isEmptyOrDefaultElement){if (list == null || isEmptyOrDefaultElement == null){throw new Exception("Check the parameters they can not be null.");}bool result = false;int maxCount = list.Count - 1;for (int i = maxCount; i >= 0; i--){if (isEmptyOrDefaultElement(list[i])){continue;}else{for (int j = 0; j < i; j++){if (!isEmptyOrDefaultElement(list[j])){continue;}else{var value = list[j];list[j] = list[i];list[i] = value;result = true;break;}}}}return result;}

2、此方法有助于替换数组的空元素或默认元素。元素的空引用或默认引用将在数组中替换。

public static bool Defragment(T[] array, Func<T, bool> isEmptyOrDefaultElement){if (array == null || isEmptyOrDefaultElement == null){throw new Exception("Check the parameters they can not be null.");}bool result = false;int maxCount = array.Length - 1;for (int i = maxCount; i >= 0; i--){if (isEmptyOrDefaultElement(array[i])){continue;}else{for (int j = 0; j < i; j++){if (!isEmptyOrDefaultElement(array[j])){continue;}else{var value = array[j];array[j] = array[i];array[i] = value;result = true;break;}}}}return result;}

使用代码

1.列表示例的碎片整理

[TestMethod]public void ListWithPrimitiveDataTypesCase1_TheListIsDefragmented(){// prepareIList<int> list = new List<int>() { 0, 0, 0, 1, 0, 0, 1, 1 };// actDefragmentation<int>.Defragment(list, (x) => x == 0);// assertAssert.AreEqual(1, list[0]);Assert.AreEqual(1, list[1]);Assert.AreEqual(1, list[2]);Assert.AreEqual(0, list[3]);Assert.AreEqual(0, list[4]);Assert.AreEqual(0, list[5]);Assert.AreEqual(0, list[6]);Assert.AreEqual(0, list[7]);}

2.数组示例的碎片整理

[TestMethod]public void ArrayWithPrimitiveDataTypesCase1_TheArrayIsDefragmented(){// prepareint[] array = { 0, 0, 0, 1, 0, 0, 1, 1 };// actDefragmentation<int>.Defragment(array, (x) => x == 0);// assertAssert.AreEqual(1, array[0]);Assert.AreEqual(1, array[1]);Assert.AreEqual(1, array[2]);Assert.AreEqual(0, array[3]);Assert.AreEqual(0, array[4]);Assert.AreEqual(0, array[5]);Assert.AreEqual(0, array[6]);Assert.AreEqual(0, array[7]);}

更多功能

替换元素时,可以将值从数组/列表的非空元素复制到空元素。有关更多功能,请下载本文准备的文件和测试并进行研究。该项目包括其他两种方法:

1、对于列表:

public static bool Defragment(T[] array, Func<t, bool> isEmptyOrDefaultElement,Action<T, T> copyFromSourceToDestination)

2、对于数组:

public static bool Defragment(IList<T> list, Func<T, bool> isEmptyOrDefaultElement,Action<T, T> copyFromSourceToDestination)

https://www.codeproject.com/Tips/5287288/Defragmentation-of-List-Array-in-Csharp-Closing-Al

在C#中对列表/数组进行碎片整理——关闭所有空白相关推荐

  1. python中 tolist_python 列表,数组,矩阵两两转换tolist()的实例

    通过代码熟悉过程: # -*- coding: utf-8 -*- from numpy import * a1 =[[1,2,3],[4,5,6]] #列表 print('a1 :',a1) #(' ...

  2. python中tolist_python 列表,数组,矩阵两两转换tolist()的实例

    # -*- coding: utf-8 -*- from numpy import * a1 =[[1,2,3],[4,5,6]] #列表 print('a1 :',a1) #('a1 :', [[1 ...

  3. ultimatedefrag 6汉化版(磁盘碎片整理) v6.0.62.0

    大家在使用电脑的时候经常会下载各种软件,有些用户在使用过后通常会把软件给删除,可是在删除的时候总会有些文件删不干净,而这时就可以试试ultimatedefrag 6,这是由DiskTrix公司开发的一 ...

  4. 如何设置计划任务程序 每6小时运行一次_磁盘碎片整理程序 DiskTrix UltimateDefrag 6.0.62.0 中文汉化版...

    UltimateDefrag 6 中文版是由 DiskTrix 公司开发的一款独家支持对 NTFS 系统元文件进行碎片整理和自定义放置的终极磁盘碎片整理工具,完全解决了与碎片和文件放置相关的硬盘性能的 ...

  5. linux 磁盘碎片整理,Linux上没有磁盘碎片清理功能如何整理磁盘碎片

    我们都知道,Windows系统都有磁盘碎片清理功能,但是在Linux上却没有,那么Linux要如何清理磁盘碎片呢?下面小编就给大家介绍下Linux整理磁盘碎片的方法. windows系统的文件系统在保 ...

  6. 那些年解的疑难性能问题 --- ext4碎片整理

    引子 年轻时候的我们,觉得疑难问题大都是技术方面的问题.觉得自己解个疑难高深技术问题,就很了不起似的. 但是随着工作经历的不断丰富,我们会发现国内IT企业搞法,光拼技术,很容易被年轻人赶上的.因为国内 ...

  7. 电脑怎么进行磁盘碎片整理?

    磁盘是电脑的重要组成部分,可以帮助我们储存很多数据.而其中的"磁盘碎片整理"功能,相信很多人也不陌生.但是不少人并不知道具体要怎么操作呢?下面我们就来了解一下. 怎么进行磁盘碎片整 ...

  8. win7优化设置_Win7旗舰版系统磁盘碎片整理程序几种打开方法

    方法一:开始搜索框打开法 1.点击Win7旗舰版系统的"开始"按钮,在开始菜单的搜索框中输入"磁盘碎片整理程序",按下键盘上的回车键,如图1所示: 图1 开始搜 ...

  9. matlab 固态 机械_固态硬盘需要“磁盘碎片整理”吗?

    固态硬盘的接口规范和定义.功能及使用方法上与普通硬盘几近相同,外形和尺寸也基本与普通的2.5英寸硬盘一致.但固态硬盘具有传统机械硬盘不具备的快速读写.质量轻.能耗低以及体积小等特点,使得固态硬盘的使用 ...

最新文章

  1. Delphi7的主窗口
  2. java 无符号转有符号_java有符号无符号的转换
  3. 大规模户外环境的具有地标的语义SLAM
  4. Ora-12154:无法解析连接字符串
  5. 奇绩创坛 2021年秋季创业营 反馈:再接再厉
  6. VTK:循环收缩用法实战
  7. 【spring boot】【spring cloud】异常:找不到方法HikariDataSource.getMetricsTrackerFactory()
  8. 安装netframewoMS SQL SERVER 2005安装手记
  9. CPS fact debug - Continuation-pass style
  10. 【转】ABP源码分析二十四:Notification
  11. Java案例:使用clone()方法克隆对象
  12. 工作 3 年就是高级,这就是差距啊
  13. Windows 10驱动开发入门(五):创建虚拟显示器 Indirect Display驱动开发
  14. 融合应急指挥调度系统
  15. python 文件内容对比_用python进行文件比对
  16. Android会议室管理app
  17. GitHub / 码云 Pages 打造个人在线简历
  18. 用 VMware 12 Player 安装Ubuntu 14.04.5 分区时提示“没有定义根文件系统,请回到分区菜单以修正此错误”
  19. java打印ascii码_JAVA实现打印ascii码表代码
  20. window server2008下安装VS.NET2008

热门文章

  1. windows php apc 安装,php-apc 安装
  2. python wget 卡住_python – Paramiko在执行大型wget命令时挂起
  3. linux内核内存映射实验报告,动手实践-Linux内存映射基础(上)
  4. 抓住眼球的美食海报模板|总有设计技法,吸引住你
  5. UI设计实用干货素材|引导页模板
  6. 电商促销海报PSD模板|临摹优秀,设计好的banner广告从试炼开始!
  7. python数据参数_python 的参数总结
  8. python中valueerror是什_Python:ValueError和Exception的区别?
  9. oracle大作业_最累人7大专业
  10. java 匿名初始化_Java:双括号初始化 /匿名内部类初始化法