Beispiel #1
0
        public bool Remove(TK key, CanRemovePredicate predicate)
        {
            LinkedListNode <KeyValuePair <TK, TV> > node;

            if (_dict.TryGetValue(key, out node))
            {
                bool doStop;
                if (null == predicate || predicate(node.Value, out doStop))
                {
                    RemoveNode(node);
                    return(true);
                }
            }

            return(false);
        }
Beispiel #2
0
        public void Clear(CanRemovePredicate predicate)
        {
            LinkedListNode <KeyValuePair <TK, TV> > node = _orderedlist.Last;

            while (null != node)
            {
                LinkedListNode <KeyValuePair <TK, TV> > nodePrev = node.Previous;

                bool doStop = false;
                if (null == predicate || predicate(node.Value, out doStop))
                {
                    RemoveNode(node);
                }

                if (doStop)
                {
                    break;
                }

                node = nodePrev;
            }
        }