/// <summary> /// 索引 /// </summary> /// <param name="nIndex"></param> /// <returns></returns> public TValue ValueIndexOf(Int32 nIndex) { CKeyValue <TKey, TValue> keyValuePair = IndexOf(nIndex); if (keyValuePair == null) { return(default(TValue)); } return(keyValuePair.GetValue()); }
/// <summary> /// 值列表 /// </summary> public List <TValue> ValueList() { List <TValue> valueList = new List <TValue>(); Int32 nSize = m_Array == null ? 0 : m_Array.Count; for (Int32 i = 0; i < nSize; ++i) { CKeyValue <TKey, TValue> keyValuePair = m_Array[i]; if (keyValuePair == null) { continue; } valueList.Add(keyValuePair.GetValue()); } return(valueList); }
/// <summary> /// 弹出队列头元素 /// </summary> /// <param name="rOutKey"></param> /// <param name="rOutValue"></param> /// <returns></returns> public bool PopFront(ref TKey rOutKey, ref TValue rOutValue) { if (m_Array == null || m_Array.Count <= 0) { return(false); } CKeyValue <TKey, TValue> keyValuePair = m_Array[0]; if (keyValuePair == null) { return(false); } m_Array.RemoveAt(0); rOutKey = keyValuePair.GetKey(); rOutValue = keyValuePair.GetValue(); return(true); }
/// <summary> /// 查找 /// </summary> /// <param name="key"></param> /// <param name="rOutValue"></param> /// <returns></returns> public bool QuickFind(TKey key, ref TValue rOutValue) { rOutValue = default(TValue); if (m_Array == null || m_Array.Count < 1) { return(false); } Int32 nFront = 0; Int32 nEnd = m_Array.Count - 1; Int32 nMid = (nFront + nEnd) / 2; while (nFront <= nEnd) { CKeyValue <TKey, TValue> keyValuePair = m_Array[nMid]; if (keyValuePair == null) { return(false); } int compare = keyValuePair.GetKey().CompareTo(key); if (compare == 0) { rOutValue = keyValuePair.GetValue(); return(true); } if (compare < 0) { nFront = nMid + 1; } else { nEnd = nMid - 1; } nMid = (nFront + nEnd) / 2; } return(false); }