我创建了一个二叉搜索树,我想让它尽可能高效。添加节点时,我在将其与 String
进行比较时使用了 equalsIgnoreCase()
(为了防止重复)。
添加两个节点时,例如:"BOB"
和 "bob"
。
例如:
将“BOB”
转换为ASCII = 066 079 066
将 "bob"
转换为 ASCII= 098 111 098
您可以看到 "BOB"
和 "bob"
由于大写字母而具有不同的值。
无论大小写如何,equalsIgnoreCase()
是否会将其作为一个条目接受?
这有助于提高效率吗?
最佳答案
这很可能会破坏你的二叉树。按字典顺序,“bob”和“BOB”之间有许多值(甚至是常见值)。例如:以小写“a”或大写字母“C”或以上开头的任何内容。如果它们中的任何一个在您的树中,那么“BOB”将在该节点处朝一个方向移动(“BOB”<“Dog”),而“bob”将朝另一个方向移动(“bob”>“Dog”)。这意味着您甚至没有机会比较“bob”和“BOB”。
您可以通过以下任一方式使其工作:
- 使用
compareToIgnoreCase(String)
或 - 规范化所有输入(通过使用
toLowerCase()
或toUpperCase()
)
关于java - 忽略大小写影响字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47677753/