C#把数组中的某个元素取出来放到第一个位置
如何取出数组中符合某种条件的元素,然后放在数组最前面,即索引为0的位置?
思路大致如下:
→找到符合条件的数组元素,把之赋值给一个临时变量temp,并记下该数组元素的索引位置,假设是index
→在源数组中,从索引为0的数组元素开始,拷贝index个数组元素到另外一个目标数组
→把临时变量temp赋值给目标数组索引为0的位置
public static class ArrHelper{/// <summary>/// 对类型为T的数组进行扩展,把满足条件的元素移动到数组的最前面/// </summary>/// <typeparam name="T"></typeparam>/// <param name="arr">源数组</param>/// <param name="match">lamda表达式</param>/// <returns></returns>public static bool MoveToFront<T>(this T[] arr, Predicate<T> match){//如果数组的长度为0if (arr.Length == 0){return false;}//获取满足条件的数组元素的索引var index = Array.FindIndex(arr, match);//如果没有找到满足条件的数组元素if (index == -1){return false;}//把满足条件的数组元素赋值给临时变量var temp = arr[index];Array.Copy(arr, 0, arr, 1, index);arr[0] = temp;return true;}public static void PrintArray<T>(T[] arr){foreach (var item in arr){Console.Write(item + " ");}Console.WriteLine();}}
以上,是针对泛型数组的扩展,所以可以直接使用数组实例调用扩展方法。
class Program{static void Main(string[] args){int[] intArr = new int[]{1, 2, 3, 4, 5};ArrHelper.PrintArray(intArr);intArr.MoveToFront(i => i == 3);ArrHelper.PrintArray(intArr);Console.ReadKey();}}
C#把数组中的某个元素取出来放到第一个位置的更多相关文章
- 在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。
//在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’:输出这个数组中的所有元素. char [][]y=new char [10][10 ...
- 在主方法中定义一个大小为50的一维整型数组,数组i名为x,数组中存放着{1,3,5,…,99}输出这个数组中的所有元素,每输出十个换一行
package hanqi; import java.util.Scanner; public class Test7 { public static void main(String[] args) ...
- (转载)PHP删除数组中的特定元素的代码
(转载)http://www.jb51.net/article/30689.htm 我们知道,PHP没有提供专门删除一个特定数组元素的方法.但是可以通过unset()函数来完成这种要求比如下面的程序: ...
- [jstips]向数组中插入一个元素
向现有数组中插入一个元素是经常会见到的一个需求.你可以: 使用push将元素插入到数组的尾部: 使用unshift将元素插入到数组的头部: 使用splice将元素插入到数组的中间: 上面那些方法都是常 ...
- 交换数组中两个元素的位置,元素包括key和value 一维数组
/*author: yangyu@sina.cndescription: 交换数组中两个元素的位置,元素包括key和value,具体用法见下面的例子*/$arr = array(11=>'a', ...
- char数组中除去某个元素
/* 本程序说明: char数组中除去某个元素(其实就是strcpy源码的变形) */ #include <iostream> #include <cassert> #incl ...
- php获取两个数组相同的元素(交集)以及比较两个数组中不同的元素(差集)
(一)php获取两个数组相同元素 array array_intersect(array $array1, array $array2, [, array $...]) array array_ ...
- Java-Runoob-高级教程-实例-数组:14. Java 实例 – 在数组中查找指定元素
ylbtech-Java-Runoob-高级教程-实例-数组:14. Java 实例 – 在数组中查找指定元素 1.返回顶部 1. Java 实例 - 在数组中查找指定元素 Java 实例 以下实例 ...
- Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素-un
ylbtech-Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素 1.返回顶部 1. Java 实例 - 查找数组中的重复元素 Java 实例 以下实例 ...
随机推荐
- Plus One & Plus One Linked List
Given a non-negative number represented as an array of digits, plus one to the number. The digits ar ...
- pop3设置
- Java继承概述
继承概述 : 父类(超类,基类): 子类(派生类): extends 只能继承一个类,Java不支持多重继承: 子类继承父类之后,子类可以调用父类的属性和方法, 也可以重写父类的属性和方法,还可以增加 ...
- Deep learnin简介
从今天开始,准备入DL的大坑,希望自己能坚持下来. 网上有不少介绍: 深度学习的历 史:http://www.goldencui.org/2014/12/02/%E7%AE%8 ...
- linux上jdk管理
查看CentOS自带JDK是否已安装. yum list installed |grep java. 若有自带安装的JDK,卸载CentOS系统自带Java环境? yum -y remove java ...
- Oracle学习笔记:使用replace、regexp_replace实现字符替换、姓名脱敏
在数据库中难免会遇到需要对数据进行脱敏的操作,无论是姓名,还是身份证号. 最近遇到一个需求,需要对姓名进行脱敏: 姓名长度为2,替换为姓+*: 姓名长度为3,替换中间字符为*: 姓名长度为4,替换第3 ...
- docker:一个支持django的dockerfile
其中,包括了主要的生产环境模块, 从alpine作起,镜像不大.保存用. FROM alpine:3.7 COPY . /target-dir WORKDIR /target-dir RUN sed ...
- Spark streaming的执行流程
http://www.cnblogs.com/shenh062326/p/3946341.html 其实流程是从这里转载下来的,我只是在流程叙述中做了一下的标注. 当然为了自己能记住的更清楚,我没有 ...
- MIT-6.828-JOS-lab4:Preemptive Multitasking
Lab 4: Preemptive Multitasking tags: mit-6.828, os 概述 本文是lab4的实验报告,主要围绕进程相关概念进行介绍.主要将四个知识点: 开启多处理器.现 ...
- 必读,sql加索引调优案例和explain extended说明
做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 昨天分享了Mysql中的 explain 命令,使用 explain 来分析 select 语句的运行效果,如 :expl ...