コード例 #1
0
        public static V GetValueOrDefault <K, V>(this ImHashMap <K, V> map, K key, V defaultValue = default(V))
        {
            var hash = key.GetHashCode();

            while (map != null)
            {
                if (map.Hash == hash)
                {
                    return(ReferenceEquals(key, map.Key) || key.Equals(map.Key)
                        ? map.Value
                        : map.GetConflictedValueOrDefault(key, defaultValue));
                }

                map = hash < map.Hash
                    ? (map as ImHashMap <K, V> .Branch)?.LeftNode
                    : (map as ImHashMap <K, V> .Branch)?.RightNode;
            }

            return(defaultValue);
        }