/** * 插入一个词 * * @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 } }
/** * 删除一个词 * * @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; } }