博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用委托实现对List的常用方法提取
阅读量:5265 次
发布时间:2019-06-14

本文共 2033 字,大约阅读时间需要 6 分钟。

在开发中,List是经常用到的数据类型。对List操作有一些常用方法,可以用委托和lambda表达式进行提取方法。

首先声明使用到的几个委托

    public delegate bool Condi<T>(T ele);

    public delegate void Do<T>(T ele);
    public delegate K Transto<T,K>(T ele);

第一个方法 列表内符合条件的元素的个数

 /// <summary>

        /// 列表内符合条件的元素的个数
        /// </summary>
        public static int Count<T>(List<T> list, Condi<T> condi)
        {
            int count = 0;
            foreach (T e in list)
            {
                if (condi(e))
                {
                    count++;
                }
            }
            return count;
        }
第二个方法 筛选出符合条件的元素
        /// <summary>
        /// 筛选出符合条件的元素
        /// </summary>
        public static List<T> Filter<T>(List<T> list, Condi<T> condi)
        {
            List<T> newlist = new List<T>();
            foreach (T e in list)
            {
                if (condi(e))
                {
                    newlist.Add(e);
                }
            }
            return newlist;
        }
第三个方法 每个元素都执行一个操作
        /// <summary>
        /// 每个元素都执行一个操作
        /// </summary>
        public static void Foreach<T>(List<T> list, Do<T> DO)
        {
            foreach (T e in list)
            {
                DO(e);
            }
        }
第四个方法 是否存在符合条件和元素
        /// <summary>
        /// 是否存在符合条件和元素
        /// </summary>
        public static bool Exists<T>(List<T> list, Condi<T> condi)
        {
            foreach (T e in list)
            {
                if (condi(e))
                {
                    return true;
                }
            }
            return false;
        }
第五个方法 转换数据类型
        /// <summary>
        /// 转换数据类型
        /// </summary>
        public static List<K> Trans<T,K>(List<T> list, Transto<T,K> tran)
        {
            List<K> newlist = new List<K>();
            foreach (T e in list)
            {
                newlist.Add(tran(e));
            }
            return newlist;
        }

可以用下面的代码测试一下运行情况

 public static void Main(string[] args)

        {
            //List<int> list = new List<int>( new int[]{0,1,2,-2,3,-1,10,4,6});
            List<int> list = new List<int>(new int[] { 0, 100, 20, -20 });
            Console.WriteLine("列表的个数是" +  list.Count);
            Console.WriteLine("列表大于0的个数是"+ ListExt.Count<int>( list,e=>e>0));
            Console.Write("列表大于0的元素是");
            ShowList<int>( ListExt.Filter<int>(list, e => e > 0));
            ListExt.Foreach<int>(list, e => Console.Write(e+","));
            Console.WriteLine();
            Console.WriteLine("列表是否存在小于0的元素" + ListExt.Exists<int>(list, e => e <0));
            Console.Write("转换数据类型");
            ShowList<string>(ListExt.Trans<int, string>(list, e => e.ToString().ToCharArray()[0].ToString()));
        }
        static void ShowList<T>(List<T> list)
        {
            foreach(T t in list)
            {
                Console.Write(t+",");
            }
            Console.WriteLine();
        }

转载于:https://www.cnblogs.com/haiconc/archive/2012/02/16/2354807.html

你可能感兴趣的文章
ruby 中文字符to_json后乱码(unicode)
查看>>
《大道至简》第六章读后感
查看>>
codeforce 597C-Subsequences(dp+树状数组)
查看>>
[android](学习笔记6)为应用程序添加对话框(1)
查看>>
windows下mongodb安装与使用
查看>>
rotate the clock
查看>>
bugku 变量
查看>>
Python 环境傻瓜式搭建 :Anaconda概述
查看>>
数据库01 /Mysql初识以及基本命令操作
查看>>
数据库02 /MySQL基础数据类型以及多表之间建立联系
查看>>
Python并发编程04/多线程
查看>>
CF461B Appleman and Tree
查看>>
CF219D Choosing Capital for Treeland
查看>>
杂七杂八的小笔记本
查看>>
51Nod1353 树
查看>>
CF1215E Marbles
查看>>
.net Core 图片验证码 基于SkiaSharp实现
查看>>
fish redux 个人理解
查看>>
java 笔记一些
查看>>
BZOJ2339 HNOI2011卡农(动态规划+组合数学)
查看>>