ExtList.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 MySort<T>(this List<T> list, Func<T, T, bool> func)
  17. {
  18. bool finish = false;
  19. for (int i = 0; i < list.Count; i++)
  20. {
  21. finish = true;
  22. for (int j = 0; j < list.Count - i - 1; j++)
  23. {
  24. if (func(list[j], list[j + 1]))
  25. {
  26. finish = false;
  27. T t = list[j];
  28. list[j] = list[j + 1];
  29. list[j + 1] = t;
  30. }
  31. }
  32. if (finish)
  33. {
  34. break;
  35. }
  36. }
  37. }
  38. public static float MyMax<T>(this List<T> list, Func<T, float> func)
  39. {
  40. float result = func(list[0]);
  41. for (int i = 1; i < list.Count; i++)
  42. {
  43. if (result < func(list[i]))
  44. {
  45. result = func(list[i]);
  46. }
  47. }
  48. return result;
  49. }
  50. public static float MySum<T>(this List<T> list, Func<T, float> func)
  51. {
  52. float result = 0;
  53. for (int i = 0; i < list.Count; i++)
  54. {
  55. result += func(list[i]);
  56. }
  57. return result;
  58. }
  59. }
  60. }