我正在用Java为项目构建一个小的内存文件系统,我目前正在使用二进制搜索来定位节点,但是当我在查找错误时,我注意到有大写字母的节点将是由于它们在Unicode中的位置,因此排序到列表的开头。这仍然适用于使用二进制搜索查找节点,但是它们应该表示按字母顺序排序的列表,这是不可接受的,例如:
Hosts.txt abc home settings.txt
我认为最简单的解决方案(理论上)就是将字符串放在字符集中,字符布局如下:
aAbBcCdDeEfFgGhHiIjJkKlLmM... and so on with special characters and such included
有没有办法轻松地做到这一点或者更好的方式?
答案 0 :(得分:0)
您应该定义自己的比较器:
public class MyStringComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
int caseIgnoreResult = s1.compareToIgnoreCase(s2);
if (caseIgnoreResult == 0) {
return s1.compareTo(s2);
}
else {
return caseIgnoreResult;
}
}
}
我希望这会有所帮助。