ExtList.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. namespace AtlasUtility
  2. {
  3. using System;
  4. using System.Collections.Generic;
  5. public static class ExtList
  6. {
  7. public static T Back<T>(this List<T> list, int index, bool remove = false)
  8. {
  9. T t = list[list.Count - 1 - index];
  10. if (remove)
  11. {
  12. list.RemoveAt(list.Count - 1 - index);
  13. }
  14. return t;
  15. }
  16. public static void RemoveRange<T>(this List<T> list, List<T> targetList)
  17. {
  18. foreach (var t in targetList)
  19. {
  20. list.Remove(t);
  21. }
  22. }
  23. public static void MySort<T>(this List<T> list, Func<T, T, bool> compare)
  24. {
  25. for (int i = 0; i < list.Count; i++)
  26. {
  27. bool finish = true;
  28. for (int j = 0; j < list.Count - i - 1; j++)
  29. {
  30. if (compare(list[j], list[j + 1]))
  31. {
  32. finish = false;
  33. T t = list[j];
  34. list[j] = list[j + 1];
  35. list[j + 1] = t;
  36. }
  37. }
  38. if (finish)
  39. {
  40. break;
  41. }
  42. }
  43. }
  44. public static float MyMax<T>(this List<T> list, Func<T, float> calculate)
  45. {
  46. float result = calculate(list[0]);
  47. for (int i = 1; i < list.Count; i++)
  48. {
  49. if (result < calculate(list[i]))
  50. {
  51. result = calculate(list[i]);
  52. }
  53. }
  54. return result;
  55. }
  56. public static float MySum<T>(this List<T> list, Func<T, float> calculate)
  57. {
  58. float result = 0;
  59. for (int i = 0; i < list.Count; i++)
  60. {
  61. result += calculate(list[i]);
  62. }
  63. return result;
  64. }
  65. }
  66. }