C#简单数组工具类(用泛型书写)

这篇博客介绍了如何使用C#实现一个通用的ArrayHelper类,提供排序(三种方式)、查找最大值和最小值、获取特定成员的一维数组以及查找满足条件的数据等功能。这些方法适用于各种类型的数据,简化了数组操作,提高了代码的可读性和效率。
摘要由CSDN通过智能技术生成

这里我们类实现一些简单数组的功能

1 所有的类型都适用
2 使用方便,易操作

功能包括
1 排序
2 查找满足条件的数据类型
3 查最小值和最大值
4 得到某些数据的一维数据类型

代码如下(自行参考)

using System;
using System.Collections.Generic;

public class ArrayHelper
{
	//排序1 
    public static void Sort<T>(T[] array) where T : IComparable<T>
    {
        for (int i = 0; i < array.Length; i++)
            for (int j = i + 1; j < array.Length; j++)
            {
                if (array[i].CompareTo(array[j]) > 0)
                {
                    T tmp = array[i];
                    array[i] = array[j];
                    array[j] = tmp;
                }
            }
    }
	//排序2
    public static void Sort<T>(T[] array, IComparer<T> comparer)
    {
        for (int i = 0; i < array.Length; i++)
            for (int j = i + 1; j < array.Length; j++)
            {
                if (comparer.Compare(array[i], array[j]) > 0)
                {
                    T tmp = array[i];
                    array[i] = array[j];
                    array[j] = tmp;
                }
            }
    }
	//排序3
    public delegate int Comparison<T>(T a, T b);
    public static void Sort<T>(T[] array, Comparison<T> comparison)
    {
        for (int i = 0; i < array.Length; i++)
            for (int j = i + 1; j < array.Length; j++)
            {
                if (comparison(array[i], array[j]) > 0)
                {
                    T tmp = array[i];
                    array[i] = array[j];
                    array[j] = tmp;
                }
            }
    }
	
    public delegate TKey SelectHandler<T, TKey>(T select);
    //最大值的数据查找
    public static T Max<T, TKey>(T[] arr, SelectHandler<T, TKey>  select)
        where TKey : IComparable<TKey>
    {
        if (arr.Length == 0) return default;

        T res = arr[0];
        for (int i = 1; i < arr.Length; i++)
        {
            if (select(arr[i]).CompareTo(select(res)) > 0)
            {
                res = arr[i];
            }
        }

        return res;
    }
	//最小值的数据查找
    public static T Min<T, TKey>(T[] arr, SelectHandler<T, TKey> select)
        where TKey : IComparable<TKey>
    {
        if (arr.Length == 0) return default;

        T res = arr[0];
        for (int i = 1; i < arr.Length; i++)
        {
            if (select(arr[i]).CompareTo(select(res)) < 0)
            {
                res = arr[i];
            }
        }

        return res;
    }
	//得到某些数据的一维数组
    public static TKey[] SelectMember<T, TKey>(T[] arr, SelectHandler<T, TKey> select)
    {
        TKey[] keys = new TKey[arr.Length];

        for (int i = 0; i < arr.Length; i++)
        {
            keys[i] = select(arr[i]);
        }

        return keys;
    }

    public delegate bool FindHandler<T>(T x);
    //查找满足条件第一个的数据
    public static T Find<T>(T[] arr, FindHandler<T> find)
    {
        for (int i = 0; i < arr.Length; i++)
        {
            if (find(arr[i])) return arr[i];
        }

        return default;
    }
	//查找满足条件的所有的数据
    public static T[] FindAll<T>(T[] arr, FindHandler<T> find)
    {
        List<T> list = new();

        for (int i = 0; i < arr.Length; i++)
        {
            if (find(arr[i]))
            {
                list.Add(arr[i]);
            }
        }

        return list.ToArray();
    }
}

方便以后的数组处理,还是很好用滴

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值