以下是一个使用自定义比较器将特定的字母排在数字之前的示例代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class CustomComparatorExample {
public static void main(String[] args) {
List myList = new ArrayList<>();
myList.add("A");
myList.add("1");
myList.add("B");
myList.add("2");
myList.add("C");
myList.add("3");
Comparator customComparator = new Comparator() {
@Override
public int compare(String s1, String s2) {
if (Character.isDigit(s1.charAt(0)) && !Character.isDigit(s2.charAt(0))) {
// 如果s1是数字,s2是字母,则s1排在s2前面
return 1;
} else if (!Character.isDigit(s1.charAt(0)) && Character.isDigit(s2.charAt(0))) {
// 如果s1是字母,s2是数字,则s1排在s2后面
return -1;
} else {
// 其他情况下,使用默认的字符串比较器进行比较
return s1.compareTo(s2);
}
}
};
Collections.sort(myList, customComparator);
System.out.println(myList);
}
}
在上面的代码中,我们创建了一个自定义比较器customComparator
,它按照以下规则进行比较:
s1
是数字,s2
是字母,则s1
排在s2
前面;s1
是字母,s2
是数字,则s1
排在s2
后面;然后,我们使用Collections.sort()
方法对myList
进行排序,使用我们定义的自定义比较器customComparator
进行比较。
最后,打印排序后的列表myList
,输出结果为:[1, 2, 3, A, B, C]
。可以看到,数字排在字母前面,而字母按照字母表的顺序进行排序。
下一篇:按自定义的外键进行归属搜索