【发布时间】:2014-09-25 09:05:59
【问题描述】:
我正在为一个项目用 Java 构建一个小的内存文件系统,我目前正在使用二进制搜索来定位节点,但是当我在寻找错误时,我注意到带有大写字母的节点将被排序到开头因为它们在 Unicode 中的位置而被列在列表中。这仍然适用于使用二进制搜索查找节点,但是虽然它们应该表示按字母排序的列表,但这是不可接受的,例如:
Hosts.txt abc home settings.txt
我认为最简单的解决方案(理论上)是将字符串放在一个字符集中,其中的字符布局如下:
aAbBcCdDeEfFgGhHiIjJkKlLmM... and so on with special characters and such included
有什么方法可以轻松做到这一点,或者有更好的方法吗?
【问题讨论】:
-
如何对字符串进行排序?
-
我使用二分搜索来查找要插入列表的位置。然而,这是问题的一部分,因为 'A' 和 'a' 之间的区别是整个字母表,使用 Unicode 字符串的二进制搜索无法按要求对列表进行排序
-
一些代码肯定会有所帮助,但您可能应该将二进制搜索中的字符串比较为不区分大小写
-
我看不出任何代码会有什么帮助。但是在二进制搜索中使用不区分大小写的比较会使“Hosts.txt”和“hosts.txt”相等,这是我的重点。
-
是的,但是您可以决定在不区分大小写的比较中两个字符串相等时该怎么做。 .
标签: java sorting search character-encoding