ListHelper.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Ropin.Inspection.Common.Helper
  7. {
  8. public class ListHelper<T>
  9. {
  10. public static void RemoveNull(List<T> list)
  11. {
  12. for (int i = list.Count - 1; i >= 0; i--)
  13. if (list[i] == null)
  14. list.RemoveAt(i); // O(n)
  15. }
  16. public static void RemoveNullTwo(List<T> list)
  17. {
  18. // 找出第一个空元素 O(n)
  19. int count = list.Count;
  20. for (int i = 0; i < count; i++)
  21. if (list[i] == null)
  22. {
  23. // 记录当前位置
  24. int newCount = i++;
  25. // 对每个非空元素,复制至当前位置 O(n)
  26. for (; i < count; i++)
  27. if (list[i] != null)
  28. list[newCount++] = list[i];
  29. // 移除多余的元素 O(n)
  30. list.RemoveRange(newCount, count - newCount);
  31. break;
  32. }
  33. }
  34. public static List<T> RemoveNullThree(List<T> oldList)
  35. {
  36. List<T> listTemp = new List<T>();
  37. for (int i = oldList.Count - 1; i >= 0; i--)
  38. if (oldList[i] != null)
  39. listTemp.Add(oldList[i]);
  40. return listTemp;
  41. }
  42. }
  43. }