网站索引下降如何解决,免费整套ppt模板下载网站,微信客户管理系统平台,wordpress内嵌视频目录
数组工具类基本操作
1.排序#xff1a;升序#xff0c;降序
2.查找
1#xff09;查找最值#xff1a;最大值#xff0c;最小值
2#xff09;查找满足条件的单个对象
3#xff09;查找满足条件的所有对象
4#xff09;选取数组中所有对象的某一字段
完整代…目录
数组工具类基本操作
1.排序升序降序
2.查找
1查找最值最大值最小值
2查找满足条件的单个对象
3查找满足条件的所有对象
4选取数组中所有对象的某一字段
完整代码
测试
1.测试代码
2.测试结果 本篇文章来分享一下如何实现数组工具类。工具类一般具有很强的通用性复用性很强在需要时就可以移植到项目可以让我们的工作更加快捷方便。今天要分享的数组工具类实现了有关数组基本操作。 数组工具类基本操作
1.排序升序降序 可以参考 【一文读懂】C#如何实现通用的排序功能 进行理解 /// summary
/// 选择委托
/// 返回数据类型T的属性Tkey的值
/// /summary
/// typeparam nameT数据类型/typeparam
/// typeparam nameTkey数据类型T的字段/typeparam
/// returns选择的属性/returns
public delegate TKey SelectHandlerT, TKey(T t);//注意是写在类外/// summary
/// 使用委托对任何数据类型数组进行升序排序
/// /summary
/// typeparam nameT数据类型/typeparam
/// typeparam nameTkey数据类型T的字段/typeparam
/// param namearray数据类型T的数组/param
/// param nameselectHandler选择委托的对象/param
public static void OrderByT, Tkey(T[] array, SelectHandlerT, Tkey selectHandler)where Tkey : IComparableTkey
{for (int i 0; i array.Length; i){for (int j i 1; j array.Length; j){//将委托已经取得数据类型的属性的进行比较if (selectHandler(array[i]).CompareTo(selectHandler(array[j])) 0){T temp array[i];array[i] array[j];array[j] temp;}}}
}/// summary
/// 使用委托对任何数据类型数组进行降序排序
/// /summary
/// typeparam nameT数据类型/typeparam
/// typeparam nameTkey数据类型T的字段/typeparam
/// param namearray数据类型T的数组/param
/// param nameselectHandler选择委托的对象/param
public static void OrderByDescendingT, Tkey(T[] array, SelectHandlerT, Tkey selectHandler)where Tkey : IComparableTkey
{for (int i 0; i array.Length; i){for (int j i 1; j array.Length; j){//将委托已经取得数据类型的属性的进行比较if (selectHandler(array[i]).CompareTo(selectHandler(array[j])) 0){T temp array[i];array[i] array[j];array[j] temp;}}}
} 2.查找
1查找最值最大值最小值 /// summary
/// 查找最大值
/// /summary
/// typeparam nameT数据类型/typeparam
/// typeparam nameTkey数据类型T的字段/typeparam
/// param namearray数据类型T的数组/param
/// param nameselectHandler选择委托的对象/param
/// returns返回T类型的数组中字段Tkey最大的数据/returns
public static T MaxT, Tkey(T[] array, SelectHandlerT, Tkey selectHandler)where Tkey : IComparableTkey
{T temp array[0];for (int i 1; i array.Length; i){//将委托已经取得数据类型的属性的进行比较if (selectHandler(temp).CompareTo(selectHandler(array[i])) 0){temp array[i];}}return temp;
}/// summary
/// 查找最小值
/// /summary
/// typeparam nameT数据类型/typeparam
/// typeparam nameTkey数据类型T的字段/typeparam
/// param namearray数据类型T的数组/param
/// param nameselectHandler选择委托的对象/param
/// returns返回T类型的数组中字段Tkey最大的数据/returns
public static T MinT, Tkey(T[] array, SelectHandlerT, Tkey selectHandler)where Tkey : IComparableTkey
{T temp array[0];for (int i 1; i array.Length; i){//将委托已经取得数据类型的属性的进行比较if (selectHandler(temp).CompareTo(selectHandler(array[i])) 0){temp array[i];}}return temp;
} 2查找满足条件的单个对象 /// summary
/// 查找条件委托 表示一个查找条件
/// 数据t是否满足某个条件
/// /summary
/// typeparam nameT数据类型/typeparam
/// param namet数据类型T的对象/param
/// returnsbool值/returns
public delegate bool FindHandlerT(T t);//注意是写在类外/// summary
/// 查找单个第一个满足条件的对象
/// /summary
/// typeparam nameT数据类型/typeparam
/// param namearray数据类型T的数组/param
/// param namefindHandler查找条件委托/param
/// returns返回第一个满足条件的类型为T的对象/returns
public static T FindT(T[] array, FindHandlerT findHandler)
{T temp default;for (int i 0; i array.Length; i){if (findHandler(array[i])){return array[i];}}return temp;
} 3查找满足条件的所有对象 /// summary
/// 查找满足条件的所有对象
/// /summary
/// typeparam nameT数据类型/typeparam
/// param namearray数据类型T的数组/param
/// param namefindHandler查找条件委托/param
/// returns返回 所有 满足条件的类型为T的 对象/returns
///
public static T[] FindAllT(T[] array, FindHandlerT findHandler)
{ListT res new ListT();for (int i 0; i array.Length; i){if (findHandler(array[i])){res.Add(array[i]);}}return res.ToArray();
} 4选取数组中所有对象的某一字段 /// summary
/// 选取数组中所有对象的某一字段
/// /summary
/// typeparam nameT数据类型/typeparam
/// typeparam nameTkey数据类型T的字段/typeparam
/// param namearray数据类型T的数组/param
/// param nameselectHandler选择委托的对象/param
/// returns返回数组中所有对象的某一字段组成的数组/returns
public static Tkey[] SelectT, Tkey(T[] array, SelectHandlerT, Tkey selectHandler)
{Tkey[] res new Tkey[array.Length];for (int i 0; i array.Length; i){res[i] selectHandler(array[i]);}return res;
} 完整代码 using System;
using System.Collections.Generic;/// summary
/// 选择委托
/// 返回数据类型T的属性Tkey的值
/// /summary
/// typeparam nameT数据类型/typeparam
/// typeparam nameTkey数据类型T的字段/typeparam
/// returns选择的属性/returns
public delegate TKey SelectHandlerT, TKey(T t);/// summary
/// 查找条件委托 表示一个查找条件
/// 数据t是否满足某个条件
/// /summary
/// typeparam nameT数据类型/typeparam
/// param namet数据类型T的对象/param
/// returnsbool值/returns
public delegate bool FindHandlerT(T t);/// summary
/// 数组助手类
/// 排序:升序 降序
/// 查找:最大 最小 单个 全部...
/// /summary
public static class ArrayHelper
{/// summary/// 升序排序(冒泡排序)/// 使用委托对任何数据类型数组进行排序/// /summary/// typeparam nameT数据类型/typeparam/// typeparam nameTkey数据类型T的字段/typeparam/// param namearray数据类型T的数组/param/// param nameselectHandler选择委托的对象/parampublic static void OrderByT, Tkey(T[] array, SelectHandlerT, Tkey selectHandler)where Tkey : IComparableTkey{for (int i 0; i array.Length; i){for (int j i 1; j array.Length; j){//将委托已经取得数据类型的属性的进行比较if (selectHandler(array[i]).CompareTo(selectHandler(array[j])) 0){T temp array[i];array[i] array[j];array[j] temp;}}}}/// summary/// 降序排序(冒泡排序)/// 使用委托对任何数据类型数组进行排序/// /summary/// typeparam nameT数据类型/typeparam/// typeparam nameTkey数据类型T的字段/typeparam/// param namearray数据类型T的数组/param/// param nameselectHandler选择委托的对象/parampublic static void OrderByDescendingT, Tkey(T[] array, SelectHandlerT, Tkey selectHandler)where Tkey : IComparableTkey{for (int i 0; i array.Length; i){for (int j i 1; j array.Length; j){//将委托已经取得数据类型的属性的进行比较if (selectHandler(array[i]).CompareTo(selectHandler(array[j])) 0){T temp array[i];array[i] array[j];array[j] temp;}}}}/// summary/// 查找最大值/// /summary/// typeparam nameT数据类型/typeparam/// typeparam nameTkey数据类型T的字段/typeparam/// param namearray数据类型T的数组/param/// param nameselectHandler选择委托的对象/param/// returns返回T类型的数组中字段Tkey最大的数据/returnspublic static T MaxT, Tkey(T[] array, SelectHandlerT, Tkey selectHandler)where Tkey : IComparableTkey{T temp array[0];for (int i 1; i array.Length; i){//将委托已经取得数据类型的属性的进行比较if (selectHandler(temp).CompareTo(selectHandler(array[i])) 0){temp array[i];}}return temp;}/// summary/// 查找最小值/// /summary/// typeparam nameT数据类型/typeparam/// typeparam nameTkey数据类型T的字段/typeparam/// param namearray数据类型T的数组/param/// param nameselectHandler选择委托的对象/param/// returns返回T类型的数组中字段Tkey最大的数据/returnspublic static T MinT, Tkey(T[] array, SelectHandlerT, Tkey selectHandler)where Tkey : IComparableTkey{T temp array[0];for (int i 1; i array.Length; i){//将委托已经取得数据类型的属性的进行比较if (selectHandler(temp).CompareTo(selectHandler(array[i])) 0){temp array[i];}}return temp;}/// summary/// 查找单个第一个满足条件的对象/// /summary/// typeparam nameT数据类型/typeparam/// param namearray数据类型T的数组/param/// param namefindHandler查找条件委托/param/// returns返回第一个满足条件的类型为T的对象/returnspublic static T FindT(T[] array, FindHandlerT findHandler){T temp default;for (int i 0; i array.Length; i){if (findHandler(array[i])){return array[i];}}return temp;}/// summary/// 查找所有满足条件的对象/// /summary/// typeparam nameT数据类型/typeparam/// param namearray数据类型T的数组/param/// param namefindHandler查找条件委托/param/// returns返回所有满足条件的类型为T的对象/returns/// public static T[] FindAllT(T[] array, FindHandlerT findHandler){ListT res new ListT();for (int i 0; i array.Length; i){if (findHandler(array[i])){res.Add(array[i]);}}return res.ToArray();}/// summary/// 选取数组中所有对象的某一字段/// /summary/// typeparam nameT数据类型/typeparam/// typeparam nameTkey数据类型T的字段/typeparam/// param namearray数据类型T的数组/param/// param nameselectHandler选择委托的对象/param/// returns返回数组中所有对象的某一字段组成的数组/returnspublic static Tkey[] SelectT, Tkey(T[] array, SelectHandlerT, Tkey selectHandler){Tkey[] res new Tkey[array.Length];for (int i 0; i array.Length; i){res[i] selectHandler(array[i]);}return res;}
} 测试
1.测试代码 排序功能测试可查看【一文读懂】C#如何实现通用的排序功能如下是对数组工具类的查找功能进行测试 using System;
using UnityEngine;namespace ArrayHelperTest
{public class ArrayHelperTest : MonoBehaviour{public void Start(){int[] intArray { 4, 1, 5, 0 };string[] stringArray { 2, a, ab, hello, 0 };Student[] studentArray {new Student(){ Id1001,Name张三,Age20 },new Student(){ Id1003,Name李四,Age18 },new Student(){ Id1002,Name赵六,Age21 },new Student(){ Id1000,Name王五,Age19 },new Student(){ Id1004,Name孙七,Age18 }};//查找//1查找最值最大值最小值FindMaxAndMinTestint, int(intArray, value value );FindMaxAndMinTeststring, string(stringArray, value value);FindMaxAndMinTestStudent, int(studentArray, student student.Id);FindMaxAndMinTestStudent, string(studentArray, student student.Name);//2查找满足条件的单个对象(第一个)ArrayHelper.Findint(intArray, value value 0);ArrayHelper.Findstring(stringArray, value value a);ArrayHelper.FindStudent(studentArray, student student.Age18);//3查找满足条件的所有对象Student[] students ArrayHelper.FindAllStudent(studentArray, student student.Age 18);string studentStr ;foreach (var student in students){studentStr student.Id student.Name student.Age \n;}Debug.Log(studentStr);//4选取数组中所有对象的某一字段string[] names ArrayHelper.SelectStudent,string(studentArray, student student.Name);string nameStr ;foreach (var name in names){nameStr name ;}Debug.Log(nameStr);}private void FindMaxAndMinTestT, Tkey(T[] array, SelectHandlerT, Tkey selectHandler) where Tkey : IComparableTkey{Debug.Log(array.GetType() 测试\n最小值 ArrayHelper.MinT, Tkey(array, selectHandler) 最大值 ArrayHelper.MaxT, Tkey(array, selectHandler));}}public class Student{public int Id { get; set; }public string Name { get; set; }public int Age { get; set; }}
} 2.测试结果
好了本次的分享到这里就结束啦希望对你有所帮助~