0

ListView我有一个想要排序的 Android 。目前我正在使用Collections.sortwhich 按字母顺序排列就好了。

但是,我想更进一步,移动领先的“the”。是否有内置的 Java 或 Android 方法可以处理这个问题?

如果没有,我需要什么代码?

4

1 回答 1

9

与在比较字符串之前去除前导sCollections.sort()的自定义一起使用。Comparator<String>"The"

List<String> foo = /* init */;

Comparator<String> ignoreLeadingThe = new Comparator<String>() {
    @Override public int compare(String a, String b) {
        // TODO check for nulls?

        // (?i) makes the match case-insensitive
        a = a.replaceAll("(?i)^the\\s+", "");
        b = b.replaceAll("(?i)^the\\s+", "");

        // TODO use compareToIgnoreCase() instead?
        return a.compareTo(b);
    }
};

Collections.sort(foo, ignoreLeadingThe);

演示:http: //ideone.com/6hogi

于 2012-08-29T14:37:05.533 回答