using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ropin.Inspection.Common.Helper { public class ListHelper<T> { public static void RemoveNull(List<T> list) { for (int i = list.Count - 1; i >= 0; i--) if (list[i] == null) list.RemoveAt(i); // O(n) } public static void RemoveNullTwo(List<T> list) { // 找出第一个空元素 O(n) int count = list.Count; for (int i = 0; i < count; i++) if (list[i] == null) { // 记录当前位置 int newCount = i++; // 对每个非空元素,复制至当前位置 O(n) for (; i < count; i++) if (list[i] != null) list[newCount++] = list[i]; // 移除多余的元素 O(n) list.RemoveRange(newCount, count - newCount); break; } } public static List<T> RemoveNullThree(List<T> oldList) { List<T> listTemp = new List<T>(); for (int i = oldList.Count - 1; i >= 0; i--) if (oldList[i] != null) listTemp.Add(oldList[i]); return listTemp; } } }