public void add(String key, int val)
    {
        if (index.containsKey(key))
            return;

        if (cacheSize == cacheLimit) {
            /// Remove old cache
            if (tail != null)
            {
                tail.Prev.Next = null;
                index.remove(tail);
                tail = tail.Prev;
                cacheSize--;
            }
        }

            ListNode<Integer> target = new ListNode<Integer>(val);
            if (head == null)
            {
                head = tail = target;
            }
            else
            {
                target.Next = head;
                head.Prev = target;
                head = target;
            }

            index.put(key, head);
            cacheSize++;

    }