在C#中对列表/数组进行碎片整理——关闭所有空白
目录
介绍
使用代码
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#中对列表/数组进行碎片整理——关闭所有空白相关推荐
- python中 tolist_python 列表,数组,矩阵两两转换tolist()的实例
通过代码熟悉过程: # -*- coding: utf-8 -*- from numpy import * a1 =[[1,2,3],[4,5,6]] #列表 print('a1 :',a1) #(' ...
- python中tolist_python 列表,数组,矩阵两两转换tolist()的实例
# -*- coding: utf-8 -*- from numpy import * a1 =[[1,2,3],[4,5,6]] #列表 print('a1 :',a1) #('a1 :', [[1 ...
- ultimatedefrag 6汉化版(磁盘碎片整理) v6.0.62.0
大家在使用电脑的时候经常会下载各种软件,有些用户在使用过后通常会把软件给删除,可是在删除的时候总会有些文件删不干净,而这时就可以试试ultimatedefrag 6,这是由DiskTrix公司开发的一 ...
- 如何设置计划任务程序 每6小时运行一次_磁盘碎片整理程序 DiskTrix UltimateDefrag 6.0.62.0 中文汉化版...
UltimateDefrag 6 中文版是由 DiskTrix 公司开发的一款独家支持对 NTFS 系统元文件进行碎片整理和自定义放置的终极磁盘碎片整理工具,完全解决了与碎片和文件放置相关的硬盘性能的 ...
- linux 磁盘碎片整理,Linux上没有磁盘碎片清理功能如何整理磁盘碎片
我们都知道,Windows系统都有磁盘碎片清理功能,但是在Linux上却没有,那么Linux要如何清理磁盘碎片呢?下面小编就给大家介绍下Linux整理磁盘碎片的方法. windows系统的文件系统在保 ...
- 那些年解的疑难性能问题 --- ext4碎片整理
引子 年轻时候的我们,觉得疑难问题大都是技术方面的问题.觉得自己解个疑难高深技术问题,就很了不起似的. 但是随着工作经历的不断丰富,我们会发现国内IT企业搞法,光拼技术,很容易被年轻人赶上的.因为国内 ...
- 电脑怎么进行磁盘碎片整理?
磁盘是电脑的重要组成部分,可以帮助我们储存很多数据.而其中的"磁盘碎片整理"功能,相信很多人也不陌生.但是不少人并不知道具体要怎么操作呢?下面我们就来了解一下. 怎么进行磁盘碎片整 ...
- win7优化设置_Win7旗舰版系统磁盘碎片整理程序几种打开方法
方法一:开始搜索框打开法 1.点击Win7旗舰版系统的"开始"按钮,在开始菜单的搜索框中输入"磁盘碎片整理程序",按下键盘上的回车键,如图1所示: 图1 开始搜 ...
- matlab 固态 机械_固态硬盘需要“磁盘碎片整理”吗?
固态硬盘的接口规范和定义.功能及使用方法上与普通硬盘几近相同,外形和尺寸也基本与普通的2.5英寸硬盘一致.但固态硬盘具有传统机械硬盘不具备的快速读写.质量轻.能耗低以及体积小等特点,使得固态硬盘的使用 ...
最新文章
- Delphi7的主窗口
- java 无符号转有符号_java有符号无符号的转换
- 大规模户外环境的具有地标的语义SLAM
- Ora-12154:无法解析连接字符串
- 奇绩创坛 2021年秋季创业营 反馈:再接再厉
- VTK:循环收缩用法实战
- 【spring boot】【spring cloud】异常:找不到方法HikariDataSource.getMetricsTrackerFactory()
- 安装netframewoMS SQL SERVER 2005安装手记
- CPS fact debug - Continuation-pass style
- 【转】ABP源码分析二十四:Notification
- Java案例:使用clone()方法克隆对象
- 工作 3 年就是高级,这就是差距啊
- Windows 10驱动开发入门(五):创建虚拟显示器 Indirect Display驱动开发
- 融合应急指挥调度系统
- python 文件内容对比_用python进行文件比对
- Android会议室管理app
- GitHub / 码云 Pages 打造个人在线简历
- 用 VMware 12 Player 安装Ubuntu 14.04.5 分区时提示“没有定义根文件系统,请回到分区菜单以修正此错误”
- java打印ascii码_JAVA实现打印ascii码表代码
- window server2008下安装VS.NET2008
热门文章
- windows php apc 安装,php-apc 安装
- python wget 卡住_python – Paramiko在执行大型wget命令时挂起
- linux内核内存映射实验报告,动手实践-Linux内存映射基础(上)
- 抓住眼球的美食海报模板|总有设计技法,吸引住你
- UI设计实用干货素材|引导页模板
- 电商促销海报PSD模板|临摹优秀,设计好的banner广告从试炼开始!
- python数据参数_python 的参数总结
- python中valueerror是什_Python:ValueError和Exception的区别?
- oracle大作业_最累人7大专业
- java 匿名初始化_Java:双括号初始化 /匿名内部类初始化法