Exemplo n.º 1
0
        /**
         * 插入一个词
         *
         * @param key
         * @param value
         */
        public void put(String key, V value)
        {
            if (key.length() == 0)
            {
                return;                 // 安全起见
            }
            BaseNode branch = this;

            char[] chars = key.toCharArray();
            for (int i = 0; i < chars.length - 1; ++i)
            {
                // 除了最后一个字外,都是继续
                branch.addChild(new Node(chars[i], Status.NOT_WORD_1, null));
                branch = branch.getChild(chars[i]);
            }
            // 最后一个字加入时属性为end
            if (branch.addChild(new Node <V>(chars[chars.length - 1], Status.WORD_END_3, value)))
            {
                ++size; // 维护size
            }
        }
Exemplo n.º 2
0
        /**
         * 删除一个词
         *
         * @param key
         */
        public void remove(String key)
        {
            BaseNode branch = this;

            char[] chars = key.toCharArray();
            for (int i = 0; i < chars.length - 1; ++i)
            {
                if (branch == null)
                {
                    return;
                }
                branch = branch.getChild(chars[i]);
            }
            // 最后一个字设为undefined
            if (branch.addChild(new Node(chars[chars.length - 1], Status.UNDEFINED_0, value)))
            {
                --size;
            }
        }