【问题标题】:Ignore case affect character set忽略大小写影响字符集
【发布时间】:2017-12-06 15:22:27
【问题描述】:

我创建了一个二叉搜索树,我想让它尽可能高效。添加节点时,我使用equalsIgnoreCase()String 进行比较(以防止重复)。

添加两个节点时,例如:"BOB""bob"

例如:

"BOB" 转换为 ASCII = 066 079 066

"bob" 转换为 ASCII= 098 111 098

您可以看到"BOB""bob" 由于大写字母而具有不同的值。

无论大小写如何,equalsIgnoreCase() 会接受这个作为一个条目吗?

这有助于提高效率吗?

【问题讨论】:

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

标签: java ignore-case


【解决方案1】:

这很可能会破坏您的二叉树。在“bob”和“BOB”之间按字典顺序排列有许多值(甚至是常见值)。例如:以小写“a”或大写字母“C”或以上开头的任何内容。如果其中任何一个在您的树中,则“BOB”将在该节点处朝一个方向前进(“BOB”“Dog”)。这意味着您甚至没有机会比较“bob”和“BOB”。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 2016-06-06
    • 2011-02-06
    相关资源
    最近更新 更多