忽略大小写影响字符集
Ignore case affect character set
我创建了一个二叉搜索树,我想让它尽可能高效。添加节点时,我使用 equalsIgnoreCase()
将其与 String
进行比较(以防止重复)。
添加两个节点时,例如:"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()
or toUpperCase()
)
我创建了一个二叉搜索树,我想让它尽可能高效。添加节点时,我使用 equalsIgnoreCase()
将其与 String
进行比较(以防止重复)。
添加两个节点时,例如:"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()
ortoUpperCase()
)