Java 忽略大小写影响字符集

Java 忽略大小写影响字符集,java,ignore-case,Java,Ignore Case,我已经创建了一个二叉搜索树,我想让它尽可能高效。添加节点时,我将其与字符串进行比较时使用了equalsIgnoreCase()(以防止重复) 添加两个节点时,例如:“BOB”和“BOB” 例如: 将中的“BOB”转换为ASCII=066 079 066 将中的“bob”转换为ASCII=098 111 098 您可以看到“BOB”和“BOB”由于大写字母而具有不同的值 equalsIgnoreCase()是否接受此项作为一个条目,而不考虑资本化 这有助于提高效率吗?这很可能会破坏您的二叉树。在“

我已经创建了一个二叉搜索树,我想让它尽可能高效。添加节点时,我将其与字符串进行比较时使用了
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”)。这意味着你甚至没有机会比较“鲍勃”和“鲍勃”

您可以通过以下任一方式使其工作:

  • 使用或
  • 规范化所有输入(使用或)

有些代码会更好。@yshavit这是一个很好的答案。这应该是一个答案,而不是评论@凯拉说得好!另外,作为OP的格式说明:在Java中以0(如066)开头的数字字符串表示八进制,三位数通常表示八进制。所以像“066”这样的数字令人困惑;它看起来像是十进制格式的八进制和八进制,这里两者都不是。用Java表示这个字符十六进制值的标准方法可能是0x0066或0x66。