在Java中搜索/排序和字符串编码

时间:2014-09-25 09:05:59

标签: java sorting search character-encoding

我正在用Java为项目构建一个小的内存文件系统,我目前正在使用二进制搜索来定位节点,但是当我在查找错误时,我注意到有大写字母的节点将是由于它们在Unicode中的位置,因此排序到列表的开头。这仍然适用于使用二进制搜索查找节点,但是它们应该表示按字母顺序排序的列表,这是不可接受的,例如:

Hosts.txt abc home settings.txt

我认为最简单的解决方案(理论上)就是将字符串放在字符集中,字符布局如下:

aAbBcCdDeEfFgGhHiIjJkKlLmM... and so on with special characters and such included

有没有办法轻松地做到这一点或者更好的方式?

1 个答案:

答案 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;
        }
    }
}

我希望这会有所帮助。