using System; using System.Collections.Generic; using System.Text; namespace CYQ.Data.Tool { /* internal class MList2 { private List[] listArray; public MList2() { listArray = new List[10]; for (int i = 0; i < listArray.Length; i++) { listArray[i] = new List(10000); } } private List Get(T key) { try { int num = key.GetHashCode() % 10; if (num < 0) { num = 10 + num; } return listArray[num]; } catch (Exception) { throw; } } public void Add(T key) { Get(key).Add(key); } public bool Contains(T key) { return Get(key).Contains(key); } public void Remove(T key) { Get(key).Remove(key); } public void Clear() { for (int i = 0; i < listArray.Length; i++) { listArray[i].Clear(); } } public int Count { get { int count = 0; for (int i = 0; i < listArray.Length; i++) { count += listArray[i].Count; } return count; } } public List GetItems() { List list = new List(); for (int i = 0; i < listArray.Length; i++) { list.AddRange(listArray[i]); } return list; } } */ internal class MList { List list; Dictionary dic; public MList() { list = new List(); dic = new Dictionary(); } public MList(int num) { list = new List(num); dic = new Dictionary(num); } public void Add(T key) { list.Add(key); dic.Add(key, 0); } internal void Insert(int index, T key) { list.Insert(index, key); if (!dic.ContainsKey(key)) { dic.Add(key, 0); } } public bool Contains(T key) { return dic.ContainsKey(key); } public void Remove(T key) { list.Remove(key); dic.Remove(key); } public void RemoveAt(int index) { T key = list[index]; dic.Remove(key); list.RemoveAt(index); } public void Clear() { list.Clear(); dic.Clear(); } public int Count { get { return list.Count; } } public IList List { get { return list; } } public List GetList() { if (list.Count == 0 && dic.Count > 0) { dic.Clear(); } return list; } public T this[int index] { get { return list[index]; } } } }