每个项目有一定的分值,先按分值大小排序;若分数相同,则按照字母顺序排序。
1、首先是明确要使用arrays的sort方法
根据顺序对指定的对象数组进行排序
在Java中,<? super T>是一种通配符泛型类型参数,表示“T的超类”。这意味着c参数所代表的Comparator对象可以接受类型为T或者T的超类的对象作为比较的参数。换句话说,这允许我们使用实现了T类型或其父类的Comparator进行排序操作。这样设计的好处是可以增加方法的灵活性和通用性,使得不同类型的比较器都可以被传入并使用。
2、如何使用数据:
比如有三个字符串,s1、s2、s3,每个字符串对应了一个数值;而我们要给字符串排序,因此我们定义一个整数对象数组。此外,我们还应该做一个字符串数组和一个存放字符串数值的整数数组。
3、如何写comparator,如何排序:
- 数值不相等,按照数值排序;
- 数值相等,按照字符顺序排序,str[i1].compareTo(str[i2])
comparator的详细用法:
4、实际代码
import java.util.*;
public class NumCharSort {
public static void main(String[] args) {
String [] str = {"sha","cha","cala"};
int [] num = {5,5,5};
Integer[] indices = new Integer[3];
for (int i = 0; i < 3; i++) {
indices[i] = i;}
Arrays.sort(indices,new Comparator<Integer>(){
public int compare(Integer i1, Integer i2) {
if (num[i1] != num[i2]) {
return num[i1]-num[i2]; //按照数值大小排序
}else{
return str[i1].compareTo(str[i2]);//否则按照字符顺序排序
}
}
}
);
for(int i=0;i<3;i++){
System.out.println(str[indices[i]]);
}
}
}